我打算在a中绘制多个列pandas dataframe,所有列都使用groupbyinside在另一列中进行分组seaborn.boxplot.这里有一个很好的答案,对于matplotlib matplotlib中的类似问题:组框图,但考虑到选项seaborn.boxplot附带的事实,groupby我认为可以更容易地做到这一点seaborn.
在这里,我们使用可重现的示例失败:
import seaborn as sns
import pandas as pd
df = pd.DataFrame(
[
[2, 4, 5, 6, 1],
[4, 5, 6, 7, 2],
[5, 4, 5, 5, 1],
[10, 4, 7, 8, 2],
[9, 3, 4, 6, 2],
[3, 3, 4, 4, 1]
], columns=['a1', 'a2', 'a3', 'a4', 'b'])
#Plotting by seaborn
sns.boxplot(df[['a1','a2', 'a3', 'a4']], groupby=df.b)
Run Code Online (Sandbox Code Playgroud)
我得到的是完全忽略groupby选项的东西:

然而,如果我用一个专栏做这个,它的工作得益于另一个SO问题Seaborn …
我正在使用factorplot(kind="bar").
如何缩放y轴,例如使用对数刻度?
我试图修补情节的轴,但这总是以某种方式弄乱了条形图,所以请先尝试你的解决方案,以确保它真的有效.
我试图使用以下代码将seaborn导入python(使用2.7):
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
import math as math
from pylab import rcParams
%matplotlib inline
Run Code Online (Sandbox Code Playgroud)
并收到以下错误消息:
ImportError Traceback (most recent call last)
<ipython-input-62-bd3d27f3b137> in <module>()
1 import matplotlib.pyplot as plt
----> 2 import seaborn as sns
3 import pandas as pd
4 import numpy as np
5 import math as math
C:\Python27\lib\site-packages\seaborn\__init__.py in <module>()
2 from .utils import *
3 from .palettes import *
----> 4 from .linearmodels …Run Code Online (Sandbox Code Playgroud) 我试图改变seaborn中的lmplot标记的大小.我试过传递's'或'size'作为参数,但它们都不起作用.
lm = sns.lmplot(x="totalX",y="NormI", hue="Data Type", data=df, palette="Set1", legend_out=False, S=20)
Run Code Online (Sandbox Code Playgroud)
我试过"s","markersize","size"我没有效果.我想在图上使数据点更大.任何帮助深表感谢.
我正在使用绘制多个数据帧作为点图seaborn.此外,我正在绘制同一轴上的所有数据帧.
如何在情节中添加图例?
我的代码获取每个数据框并在同一图上一个接一个地绘制它.
每个数据框都有相同的列
date count
2017-01-01 35
2017-01-02 43
2017-01-03 12
2017-01-04 27
Run Code Online (Sandbox Code Playgroud)
我的代码:
f, ax = plt.subplots(1, 1, figsize=figsize)
x_col='date'
y_col = 'count'
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df_1,color='blue')
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df_2,color='green')
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df_3,color='red')
Run Code Online (Sandbox Code Playgroud)
这在同一图上绘制了3条线.然而传说却缺失了.文档不接受label参数.
一个有效的解决方法是创建一个新的数据框并使用hue argument.
df_1['region'] = 'A'
df_2['region'] = 'B'
df_3['region'] = 'C'
df = pd.concat([df_1,df_2,df_3])
sns.pointplot(ax=ax,x=x_col,y=y_col,data=df,hue='region')
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一种方法可以为代码创建一个图例,该图例首先将点图顺序添加到图中,然后添加图例.
样本输出:
我知道seaborn.countplot有一个属性order可以设置来确定类别的顺序.但我想要做的是让类别按递减计数的顺序排列.我知道我可以通过手动计算计数(使用groupby原始数据框上的操作等)来实现这一点,但我想知道这个功能是否存在seaborn.countplot.令人惊讶的是,我无法在任何地方找到这个问题的答案.
这是一个显示每个子图的颜色条的示例:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random((10,10,)))
fig,axn = plt.subplots(2, 2, sharex=True, sharey=True)
for ax in axn.flat:
sns.heatmap(df, ax=ax)
Run Code Online (Sandbox Code Playgroud)

如何删除每个子图的颜色条?我想只有一个垂直或水平方向的颜色条.我知道我可以访问每个颜色条轴fig.get_axes()[:-4],但是如何从图中完全删除它们呢?我不认为在调用热图时可以选择不绘制颜色条.
我需要将seaborn heatmap的最大值设置cbar为2.我尝试过:
cbar_kws = { 'ticks' : [0, 2] }
sns.heatmap(tiles, robust=True, fmt="f", cmap= 'RdBu_r', cbar_kws = cbar_kws)
Run Code Online (Sandbox Code Playgroud)
但这不起作用,文档也不是很清楚.我该怎么做呢?
Seaborn如何计算其误差线?例:
import numpy as np; np.random.seed(22)
import seaborn as sns; sns.set(color_codes=True)
x = np.linspace(0, 15, 31)
data = np.sin(x) + np.random.rand(10, 31) + np.random.randn(10, 1)
ax = sns.tsplot(data=data, err_style="ci_bars")
plt.show()
Run Code Online (Sandbox Code Playgroud)
如何计算ci_bars(或ci_bands)?
是否可以tsplot在ci_bars样式中制作绘图,其中误差条或带对应于每个时间点的值的标准偏差?(而不是卑鄙的标准错误或bootstraps)
我无法在任何地方找到如何更改seaborn散点图上的标记大小.文档中size列出了一个选项,但它仅适用于需要跨点的可变大小的情况.我希望所有点的大小相同,但大于默认值!
我尝试在我的数据框中创建一个新的整数列,并将其设置为大小,但看起来实际值无关紧要,它会在相对基础上更改标记大小,因此在这种情况下,所有标记仍然是与默认大小相同.
编辑:这是一些代码
ax = sns.scatterplot(x="Data Set Description", y="R Squared", data=mean_df)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我只是尝试了一些它有效,但不确定它是否是最好的方法.我添加了size = [1,1,1,1,1,1]和sizes =(500,500).所以基本上我将所有尺寸设置为相同,尺寸范围仅为500.