我正在尝试使用 seaborn 散点图绘制数据框中前 30% 的值,如下所示。
同一图的可重现代码:
import seaborn as sns
df = sns.load_dataset('iris')
#function to return top 30 percent values in a dataframe.
def extract_top(df):
n = int(0.3*len(df))
top = df.sort_values('sepal_length', ascending = False).head(n)
return top
#storing the top values
top = extract_top(df)
#plotting
sns.scatterplot(data = top,
x='species', y='sepal_length',
color = 'black',
s = 100,
marker = 'x',)
在这里,我想对 x 轴进行排序order = ['virginica','setosa','versicolor']
。当我尝试使用时order
作为参数之一sns.scatterplot()
,它返回了一个错误AttributeError: 'PathCollection' object has no property 'order'
。正确的做法是什么?
请注意:在数据框中,setosa
也是一个类别species
然而,在前 30% 的价值中,其价值并没有下降。因此,该标签不会显示在顶部可重现代码的示例输出中。但我什至希望 x 轴上的标签也按给定的顺序排列,如下所示:
scatterplot()
不是完成这项工作的正确工具。由于您有一个要使用的分类轴stripplot()
并不是scatterplot()
。在这里查看关系图和分类图之间的区别https://seaborn.pydata.org/api.html https://seaborn.pydata.org/api.html
sns.stripplot(data = top,
x='species', y='sepal_length',
order = ['virginica','setosa','versicolor'],
color = 'black', jitter=False)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)