我有一个pandas DataFrame,索引标签名为'RowNumber'。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(data=np.random.rand(5,3), index=np.arange(5), columns=['A', 'B', 'C'])
df.index.name='RowNumber'
df
Out[1]:
A B C
RowNumber
0 0.994063 0.068659 0.158425
1 0.116639 0.109248 0.160374
2 0.086689 0.269934 0.060204
3 0.794417 0.988650 0.306970
4 0.193915 0.230677 0.414131
我用图例绘制了一个错误栏图。
df.plot(y='B', yerr='C', label='Test')
plt.legend(loc=0)
但是这会将index_column的标签/名称更改为“Test”。
A B C
Test
0 0.994063 0.068659 0.158425
1 0.116639 0.109248 0.160374
2 0.086689 0.269934 0.060204
3 0.794417 0.988650 0.306970
4 0.193915 0.230677 0.414131
为什么?我想绘制一个数据帧,而不是更改它。
即使使用简单的线图,不仅仅是errorplot,只要指定y=...
和label=...
,就会发生这种情况。
答案 0 :(得分:2)
在调用df.plot
时设置label参数会改变DataFrame的索引名称(source code):
label = kwds.pop('label', label)
ser = frame[y]
ser.index.name = label
您可能希望将其提升为an issue,但鉴于这是绘图方法的工作方式,您可以在调用plt.legend
时设置标签:
df.plot(y='B', yerr='C')
plt.legend( ('Test',), loc=0 )
plt.show()
这使df.index.name
保持不变。
In [10]: df.index.name
Out[10]: 'RowNumber'