我创建了一个随机数据框来模拟来自seaborn的数据集提示:
import numpy as np
import pandas as pd
time = ['day','night']
sex = ['female','male']
smoker = ['yes','no']
for t in range(0,len(time)):
for s in range(0,len(sex)):
for sm in range(0,len(smoker)):
randomarray = np.random.rand(10)*10
if t == 0 and s == 0 and sm == 0:
df = pd.DataFrame(index=np.arange(0,len(randomarray)),columns=["total_bill","time","sex","smoker"])
L = 0
for i in range(0,len(randomarray)):
df.loc[i] = [randomarray[i], time[t], sex[s], smoker[sm]]
L = L + 1
else:
for i in range(0,len(randomarray)):
df.loc[i+L] = [randomarray[i], time[t], sex[s], …Run Code Online (Sandbox Code Playgroud) 我创建了一个 seaborn pairplot,我想更改图例标题的大小。我已经这样做了:
matrix = sns.pairplot(...)
lg = plt.gcf().legend(title='something')
lg.get_title().set_fontsize(30)
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方法来做到这一点?
我知道由 seaborn 使用的 matplotlib 没有此处讨论的相关属性:https : //github.com/matplotlib/matplotlib/issues/8699
我有一个这样的数据集:
>>> print(ds.head())
date sum
0 2013-08-31 19.000
1 2013-09-01 37.000
2 2013-09-02 10.750
3 2013-09-03 21.500
4 2013-09-04 44.125
>>> print(ds.tail())
date sum
1742 2018-08-24 129.875
1743 2018-08-25 196.375
1744 2018-08-26 247.000
1745 2018-08-27 104.125
1746 2018-08-28 149.250
Run Code Online (Sandbox Code Playgroud)
该数据集包含大约 1700 行的每日数据。我想绘制一个箱线图,以便查看每月的值。像这样的东西

我需要像 JAN/FEB/MAR 等 x 轴上的月份。
如果我有每日数据集,我找不到任何可行的解决方案来实现这一目标。我想我必须先做数据准备并首先对每个月的值进行分组?或者我如何以简单快捷的方式进行编程?
我正在尝试制作一个 18 年的月降雨量和洪水频率记录的箱线图。即每个 x 刻度是月份,每个 x 刻度与两个箱线图相关联,一个是降雨量,一个是洪水频率。到目前为止,我已经设法使用 seaborn 绘制了这些图(请参阅以下代码和图像),但是我不知道如何创建带有两个 y 轴的箱线图,这是我需要的,因为每个变量的比例不同。
数据是这样的(数据集中flood_freq的最大值是7,这里没有显示):
Group Rainfall Flood_freq
0 Jan 115.679997 0
1 Jan 72.929999 0
2 Jan 39.719999 0
3 Jan 46.799999 1
4 Jan 54.989998 0
...
212 Dec 51.599998 0
213 Dec 45.359999 0
214 Dec 10.260000 0
215 Dec 52.709998 0
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码:
dd=pd.melt(FBPdf,id_vars=['Group'],value_vars=['Rainfall','Flood_freq'],var_name='Data')
sns.boxplot(x='Group',y='value',data=dd,hue='Data')
Run Code Online (Sandbox Code Playgroud)
结果如下:
从那以后,我查看了 seaborn 文档,它似乎不允许 2 y 轴(带有 2 y 轴的 Seaborn boxplot)。有没有人能够为我想要实现的目标提供潜在的替代方案?上面链接中的解决方案与我遇到的这个双 y 轴和分组箱线图问题无关。
非常感谢您提前!
我有一个由值矩阵构建的 seaborn 热图。矩阵的每个元素对应一个实体,我想为矩阵中的每一行/列制作刻度标签。
我尝试使用该ax.set_xticklabel()函数来完成此操作,但似乎什么也没做。这是我的代码:
type(jr_matrix)
>>> numpy.ndarray
jr_matrix.shape
>>> (15, 15)
short_cols = ['label1','label2',...,'label15'] # list of strings with len 15
fig, ax = plt.subplots(figsize=(13,10))
ax.set_xticklabels(tuple(short_cols)) # i also tried passing a list
ax.set_yticklabels(tuple(short_cols))
sns.heatmap(jr_matrix,
center=0,
cmap="vlag",
linewidths=.75,
ax=ax,
norm=LogNorm(vmin=jr_matrix.min(), vmax=jr_matrix.max()))
Run Code Online (Sandbox Code Playgroud)
仍然有矩阵索引作为标签:
关于如何正确更改这些标签的任何想法将不胜感激。
编辑:如果重要的话,我正在使用 jupyter notebooks 来做这件事。
我想在使用seaborn.
import numpy as np
import seaborn as sns
x = np.random.standard_normal(1000)
sns.distplot(x, kde = False)
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
这是我的熊猫数据帧:
Area Gender Quantity
XXX Men 115
XXX Men 105
XXX Men 114
YYY Men 100
YYY Men 90
YYY Men 95
YYY Men 101
XXX Women 120
XXX Women 122
XXX Women 115
XXX Women 117
YYY Women 91
YYY Women 90
YYY Women 90
Run Code Online (Sandbox Code Playgroud)
这就是我创建箱线图的方式。
import seaboard as sns
import matplotlib.pyplot as pat
fig, ax = plt.subplots(figsize=(15,11))
ax = sns.boxplot(x="Area", y="Quantity", hue="Gender", data=df, palette="Set3")
Run Code Online (Sandbox Code Playgroud)
我想Area按Quantity递增顺序按中位数对组进行排序。我该怎么做?
我想在热图单元格上添加交叉(X)(取决于显着性水平,但问题在于添加 X)。
就像在 R 语言中一样(sig.level = XXX)。
请参阅使用的 Python 和 R 代码以及相应的输出图像。
感谢您的帮助。
# Draw the heatmap with the mask and correct aspect ratio
sns.heatmap(corr, mask=mask, cmap=cmap, center=0, vmin=-1, vmax=1, square=True, linewidths=0.5, fmt=".2f",
cbar_kws={"shrink": .65, "orientation": "horizontal", "ticks":np.arange(-1, 1+1, 0.2)},
annot = True, annot_kws={"weight": 'bold', "size":15})
corrplot(cor(subset (wqw, select =
c(fixed.acidity:quality,ratio.sulfur.dioxide))),
# compute the p matrix
p.mat = cor.mtest(subset
(wqw, select = c(fixed.acidity:quality,ratio.sulfur.dioxide))),
# significance level 0.01
sig.level = 0.01,
# Method to display : color (could be corcle, ...) …Run Code Online (Sandbox Code Playgroud) 我试图在一个足球场的 matplotlib 图上叠加一个热图。
这是由下面的代码块创建的 matplotlib 音高的图像:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.patches as plt_p
import numpy as np
def draw_pitch(ax):
# size of the pitch is 120, 80
#Create figure
#Pitch Outline & Centre Line
plt.plot([0,0],[0,80], color="black")
plt.plot([0,120],[80,80], color="black")
plt.plot([120,120],[80,0], color="black")
plt.plot([120,0],[0,0], color="black")
plt.plot([60,60],[0,80], color="black")
#Left Penalty Area
plt.plot([14.6,14.6],[57.8,22.2],color="black")
plt.plot([0,14.6],[57.8,57.8],color="black")
plt.plot([0,14.6],[22.2,22.2],color="black")
#Right Penalty Area
plt.plot([120,105.4],[57.8,57.8],color="black")
plt.plot([105.4,105.4],[57.8,22.5],color="black")
plt.plot([120, 105.4],[22.5,22.5],color="black")
#Left 6-yard Box
plt.plot([0,4.9],[48,48],color="black")
plt.plot([4.9,4.9],[48,32],color="black")
plt.plot([0,4.9],[32,32],color="black")
#Right 6-yard Box
plt.plot([120,115.1],[48,48],color="black")
plt.plot([115.1,115.1],[48,32],color="black")
plt.plot([120,115.1],[32,32],color="black")
#Prepare Circles …Run Code Online (Sandbox Code Playgroud) 我想使用 seaborn 用 violinplots 来可视化我的整个 Pandas 数据框,并且我认为我已经进行了必要的更正,以便为我的数据框拥有的 270 个变量生成一个大图。
但是,无论我做什么,小提琴图都只显示每个变量的内部迷你箱线图(正如这里描述的另一个问题),而不是它们的 kde:
fig, ax = plt.subplots(figsize=(50,5))
ax.set_ylim(-6, 6)
a = sns.violinplot(x='variable', y='value', data=pd.melt(train_norm), ax=ax)
a.set_xticklabels(a.get_xticklabels(), rotation=90);
plt.savefig('massive_violinplot.png', figsize=(50,5), dpi=220)
Run Code Online (Sandbox Code Playgroud)
(为裁剪图道歉,整个事情太大而无法发布)
而以下代码,使用相同的pd.Dataframe,但只显示前六个变量,显示正确:
fig, ax = plt.subplots(figsize=(10,5))
ax.set_ylim(-6, 6)
a = sns.violinplot(x='variable', y='value', data=pd.melt(train_norm.iloc[:,:6]), ax=ax)
a.set_xticklabels(a.get_xticklabels(), rotation=90);
plt.savefig('massive_violinplot.png', figsize=(10,5), dpi=220)
Run Code Online (Sandbox Code Playgroud)
我怎么能得到像上面所有变量的图表,用适当的小提琴图来显示他们的kde?
python ×10
seaborn ×10
matplotlib ×6
pandas ×3
boxplot ×2
distribution ×1
heatmap ×1
jupyter ×1