我尝试使用如下所示的海运散点图绘制数据框中前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',)
这里,我想对order = ['virginica','setosa','versicolor']
中的x轴进行排序。当我试图将order
用作sns.scatterplot()
中的一个参数时,它返回了一个错误AttributeError: 'PathCollection' object has no property 'order'
。正确的方法是什么?
请注意:在嵌套框架中,setosa
也是species
中的一个类别,但是,在前30%的值中,它的值没有下降。因此,该标签没有显示在顶部可重现代码的示例输出中。但是我希望该标签也以如下所示的顺序显示在x轴上:
3条答案
按热度按时间ny6fqffe1#
scatterplot()
不是该作业的正确工具。由于您有一个分类轴,因此您希望使用stripplot()
而不是scatterplot()
。请在此处查看关系图和分类图之间的差异https://seaborn.pydata.org/api.html41ik7eoe2#
这意味着
sns.scatterplot()
不会将order
作为其args
之一。对于物种setosa
,您可以使用alpha
隐藏散点,同时保留刻度。输出是
uujelgoq3#
对于那些想要使用sns.scatterplot over sns.strpplot中可用的额外参数(变量的大小和样式Map)的人来说,在将其传递给seaborn之前,可以简单地通过对数组进行排序来设置x轴的顺序。下面将按顺序排序。