我试图在FacetGrid Seaborn
对象的每个方面创建一个方面特定的图例,例如由catplot
生成的。
考虑下面的^ {< CD3> },其中{{CD4}}是变量的绘图,相对于分类^ {< CD5> },根据变量{{*CD6}}和(工具)^ {CD7}}在行和列之间刻面。将hue
设置为进行测量的特定仪器的序列号。
以下是DataFrame
:
df = pd.DataFrame({'Condition': ['C1','C2','C1','C2','C1','C1','C2','C1',
'C1','C1', 'C1', 'C2', 'C1', 'C2', 'C1', 'C2', 'C2'],
'model': ['Pluto','Pluto','Jupy','Jupy','Jupy','Jupy','Jupy','Jupy',
'Jupy', 'Pluto', 'Pluto', 'Pluto', 'Pluto', 'Pluto', 'Jupy', 'Jupy',
'Pluto'],
'serial': [2520,2520,3568,3568,3568,3580,3580,356,
456, 2580, 2580, 2580, 2599, 2599, 2700, 2700,
2560],
'measurement': [1.02766,1.0287,1.0099,1.0198,1.0034,1.0036,1.0054,1.0024,
1.0035,1.00245,1.00456, 1.01, 1.0023, 1.0024, 1.00238, 1.0115,
1.020],
'Lab': ['John','John','John','John','Jack','Jack','Jack','John',
'Jack','John', 'Jack', 'Jack', 'Jack', 'Jack', 'John', 'John',
'John']}
)
一些方面只包含hue
级别的子集,随着级别数量的增加FacetGrid
图例变得相当长。受另一个post答案的启发,我选择使用g.axes.ravel()
在FacetGrid
{
sns.set_style("ticks")
g = sns.catplot(x='Condition', # returns a FacetGrid object for further editing
y = 'measurement',
data=df,
hue='serial',
row='Lab',
col='model',
s=10,
kind='swarm',
dodge=False,
aspect = 1,
sharey = True,
legend_out = True,
).despine(left=True)
for axes in g.axes.ravel():
axes.legend()
g.savefig('/Users/massimopinto/Desktop/legend_in_facets.png',
bbox_inches='tight')
这导致整个FacetGrid
对象图例中的绘图相当拥挤,信息过载。我更喜欢的是每个方面的图例仅,以显示该特定方面中出现的hue
级别。
我该怎么做
版本:熊猫:1.0.3;seaborn:0.10.0;python:3.7.2
考虑使用{{CD1>}对象,用^ {CD2>}迭代元素,用相应的值(EM>HUE列)重建每个图例。重要的是,必须在打印前对数据帧进行排序
相关问题 更多 >
编程相关推荐