用matplotlib绘图时否决数据帧索引

时间:2018-09-11 16:00:50

标签: python pandas dataframe

我想使用数据框进行绘制,但是有时候,我希望对我的x-tick标签进行更多控制,并且看起来数据框索引正在“覆盖”我的代码。这是代码:

test_df = pd.DataFrame({'cycles':[0,'b',3,'d','e','f','g'],'me':[100,80,99,100,75,100,90], 'you':[100,80,99,100,75,100,90], 'us':[100,80,99,100,75,100,90]})
f, ax = plt.subplots()
x = test_df['me']
x.index = ['a','b','c','d','e','f','g']



print(x)
for a in ax.get_xticklabels():
    a.set_text('me')

print(ax.get_xticklabels()[0])
ax.plot(x)
test_df.plot(x = 'cycles', y = 'me')

有什么简单的方法可以轻松地轻松修改数据框的x-tick标签而不更改数据框的索引,是否容易在运行中轻松地使x-ticks成为我想要的任何数据框列呢?

1 个答案:

答案 0 :(得分:1)

您可以在xticks中指定DataFrame.plot。基本上,这只是为了确保刻度标签数量正确的假人。

然后只需在绘图后手动设置刻度标签即可。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'cycles':[0,'b',3,'d','e','f','g'],
                   'me':[100,80,99,100,75,100,90]})

fig, ax = plt.subplots()
test_df.plot(x='cycles', y='me', ax=ax, xticks=test_df.index)
_ = ax.set_xticklabels(test_df['cycles'])
plt.show()

enter image description here

但是您应该对如何自动生成xticks有所犹豫。当您的值是序数时,折线图才有意义。在我看来,0应该不与'b'连接,而'e'应该不与'f'连接。在这种情况下,条形图是有意义的,并且毫不奇怪的是,生成的xticks没有问题。

test_df.plot(x='cycles', y='me', kind='bar', legend=False)

enter image description here