csv 具有以下值
Name Grade
Jack B
Jill C
y 轴的标签是 CSV 中的 B 和 C。但我希望 y 轴包含所有等级 - A、B、C、D、F。这仅绘制 y 轴中的给定值(B、C),
ax = sns.catplot(x = "姓名", y = "成绩")
是否有任何可能的方法来绘制 y 轴上的所有等级。
最佳答案
当您调用sns.catplot()
时没有 kind
参数,它调用默认的 sns.stripplot
,仅当 y
时才有效。是数字。所以如果你真的想要这种情节,你应该将成绩编码为数字。您仍然可以通过将成绩字母指定为标签来在图中显示成绩字母:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
# code grades as numbers (A: 1 etc.)
df = pd.DataFrame({'Name': ['Jack', 'Jill'],
'Grade': [2, 3]})
# catplot (i.e. the default stripplot) works, as y is numerical
sns.catplot(x='Name', y='Grade', data=df)
# provide y tick positions and labels (translate numbers back to grade letters)
plt.yticks(range(1, 7), [chr(ord('A') + i) for i in range(6)])
编辑:如果您想让 A 位于顶部,只需在末尾添加此行:
plt.gca().invert_yaxis()
关于python - Pandas:带有给定的一组 y 轴值类别图的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61176867/