Python 熊猫:带有一组给定yaxis值类别图的标签

Python 熊猫:带有一组给定yaxis值类别图的标签,python,pandas,Python,Pandas,csv具有以下值 Name Grade Jack B Jill C y轴的标签是CSV中的B和C。但我希望y轴包含所有等级-A、B、C、D、F。这只绘制y轴(B、C)中的给定值, ax=sns.catplot(x=“Name”,y=“Grade”) 是否有任何可能的方法给出y轴上的所有坡度以进行绘图 当您在不使用kind参数的情况下调用sns.catplot()时,它将调用默认的sns.stripplot,只有当y为数字时,该函数才起作用。所以如果你真的想要

csv具有以下值

Name       Grade
Jack       B
Jill       C
y轴的标签是CSV中的B和C。但我希望y轴包含所有等级-A、B、C、D、F。这只绘制y轴(B、C)中的给定值,

ax=sns.catplot(x=“Name”,y=“Grade”)


是否有任何可能的方法给出y轴上的所有坡度以进行绘图

当您在不使用
kind
参数的情况下调用
sns.catplot()
时,它将调用默认的
sns.stripplot
,只有当
y
为数字时,该函数才起作用。所以如果你真的想要这样的图,你应该把等级编码成数字。通过将等级字母指定为标签,仍可以在绘图中显示等级字母:

将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
sns.set()
#编号等级(A:1等)
df=pd.DataFrame({'Name':['Jack','Jill'],
“等级”:[2,3]})
#catplot(即默认条带图)工作,因为y是数字
sns.catplot(x='Name',y='Grade',data=df)
#提供y记号位置和标签(将数字翻译回等级字母)
plt.yticks(范围(1,7),[chr(ord('A')+i)表示范围(6)])

编辑:如果您想在顶部添加一行,只需在末尾添加以下行:

plt.gca().invert_yaxis()

是否要绘制带有分类值的绘图?不太可能。这是一种在y轴上获取更多CSV中未指定的值的方法。您可能希望按相反顺序在顶部显示坡度,当然,这很容易做到。我把密码加到我的答案上了,我明白了。但是,如果要在csv中没有的轴“Good”、“Fair”、“Excellent”、“Bad”上绘制一些字符串,这行得通吗?@Sam,是的,你可以用你喜欢的任何字符串列表替换我代码中的
[chr(ord('A')+i)for i in range(6)]
。替换yaxis的标签会改变。但是如何将其映射到csv中的值。因为在绘图时,许多图形消失了,而绘图不在原来的位置。当我给出plt.yticks(范围(1,7),['Good','Bad','A','B','C','D',F'])时,图形不是我想要的。当我给出plt.yticks(范围(1,7),Grade=['Good','Bad','A','B','C','D',F'])时,我得到一个错误。是否有办法将csv的列值映射到标签?