我想格式化 y 轴上的刻度(这个线程 Format y axis as percent 很棒),但很多解决方案导致我的特定代码出现 AttributeError
#Example code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# arbitary data to plot
df = pd.DataFrame(np.random.randn(100,2))
#plotting the data and then plotting a 0 line over the top
ax = df.plot()
ax = plt.plot([0,100],[0,0])
vals = ax.get_yticks()
ax.set_yticklabels(['{:,.2%}'.format(x) for x in vals])
plt.show()
一些测试表明,第二个绘图调用弄乱了 ax 对象,它从类“matplotlib.axes._subplots.AxesSubplot”变为类“list”。因此很容易解决,不要将第二个图归因于 ax:
ax = df.plot()
plt.plot([0,100],[0,0])
或者在 ax 对象更改之前将代码中的格式行向上移动:
ax = df.plot()
vals = ax.get_yticks()
ax.set_yticklabels(['{:,.2%}'.format(x) for x in vals])
ax = plt.plot([0,100],[0,0])
所以我的问题是:最佳实践是什么?这两种解决方法都感觉不正确,将 plt.plot() 调用分配给 ax 对象而不更改它的最佳方法是什么?或者最佳实践是使用 plt.plot(df.index, df) 而不是 df.plot()?
*注意 dp8 在 Format y axis as percent 中的回答“plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()])”不管我调用的困惑如何,它都有效斧头
最佳答案
我认为你混淆了,当你这样做时:
ax=df.plot()
你已经制作了斧头对象。如果您想添加更多内容(如另一个图),您可以简单地使用它的方法来执行此操作,例如:
ax.plot([0,100],[0,0])
关于python - 将 pandas.dataframe.plot() 与 matplotlib.pyplot.plot() 结合的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58089867/