matplotlib 尝试从Pyplot条形图中删除名称

kpbwa7wx  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(239)

我正在为一个科学展览项目处理一些数据,我对Pandas和matplotlib/pyplot非常陌生。我目前正在尝试为一些数据制作一个图表(一个条形图),并且已经能够做得很好。我将DataFrame分成两部分:名称和值本身:

data = pd.read_csv('results.csv')
data = data.sort_values(by=['Accuracy'], ascending=False)
accuracy = data['Accuracy']
names = data['Name']

这个很好用。当我画图表的时候,它也很好用:

plt.bar(names, accuracy)
plt.title('Accuracy Below 97%')
plt.ylabel('Accuracy in Percent')
plt.show()

但唯一的问题是,当我这样做时,我的名字太长了,所以它最终成为一种模糊:

我也有大约40个数据点,我知道这可能是太多了,无论如何都无法看到名称,但名称大约30个字符长,所以即使我减少了图表中的数据点数量,它仍然可能不起作用。
所以我假设我会从plt.bar(names, accuracy)中删除names,但这会引发错误:
TypeError: bar() missing 1 required positional argument: 'height'
所以我意识到我需要一个宽度值,由于数据点的数量是42,我然后尝试:
plt.bar(42, accuracy)
但这会产生一个奇怪的图表,我不想要:

所以我的问题是:我如何从图中删除名称,同时保持实际的图不变?
任何帮助都是非常感谢的。谢谢!

q8l4jmvw

q8l4jmvw1#

如果你想从图表中删除xticks标签,你可以

plt.xticks([])

此外,还可以调整x轴限制以完全删除标签。

plt.xticks([])
plt.xlim(-0.5, len(accuracy)-0.5)
eblbsuwk

eblbsuwk2#

这是你想要的,但你可以处理这些与此链接,而不是删除问题。
datetime x-axis matplotlib labels causing uncontrolled overlap

ax = data[['Accuracy','Name']].plot(title='Accuracy Below 97%')
ax.get_xaxis().set_visible(False)
pyplot.show()

相关问题