我正在尝试使用 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',)
这里,我想按照 order = ['virginica', 'setosa', 'versicolor']
的顺序对x轴进行排序。当我尝试在 sns.scatterplot()
的参数中使用 order
时,它返回一个错误 AttributeError: 'PathCollection' object has no property 'order'
。正确的做法是什么?
请注意:在数据框中,setosa
也是 species
中的一个类别,但在前30%的值中没有一个值属于该类别。因此,在示例输出中,该标签未显示出来。但是我希望即使是那个标签也按照给定的顺序显示在x轴上,如下所示:
sns.stripplot()
中使用marker=
时没有显示出'+'或'x'标记呢? - Gun