Python 如何在使用matplotlib打印时在x轴上打印等距值
我有一个超过100000行的系列,我想绘制。我的图形的x轴有问题。因为我的x轴由几个日期组成,如果你把它们都画出来,你什么都看不到 如何选择仅显示x轴上每个x中的1个 下面是一个代码示例,该代码生成的图形具有丑陋的x轴:Python 如何在使用matplotlib打印时在x轴上打印等距值,python,python-3.x,pandas,matplotlib,Python,Python 3.x,Pandas,Matplotlib,我有一个超过100000行的系列,我想绘制。我的图形的x轴有问题。因为我的x轴由几个日期组成,如果你把它们都画出来,你什么都看不到 如何选择仅显示x轴上每个x中的1个 下面是一个代码示例,该代码生成的图形具有丑陋的x轴: sr = pd.Series(np.array(range(15))) sr.index = [ '2018-06-' + str(x).zfill(2) for x in range(1,16)] Out : 2018-06-01 0 2018-06-02
sr = pd.Series(np.array(range(15)))
sr.index = [ '2018-06-' + str(x).zfill(2) for x in range(1,16)]
Out :
2018-06-01 0
2018-06-02 1
2018-06-03 2
2018-06-04 3
2018-06-05 4
2018-06-06 5
2018-06-07 6
2018-06-08 7
2018-06-09 8
2018-06-10 9
2018-06-11 10
2018-06-12 11
2018-06-13 12
2018-06-14 13
2018-06-15 14
fig = plt.plot(sr)
plt.xlabel('Date')
plt.ylabel('Sales')
使用xticks可以实现所需的效果:
在您的示例中:
sr = pd.Series(np.array(range(15)))
sr.index = [ '2018-06-' + str(x).zfill(2) for x in range(1,16)]
fig = plt.plot(sr)
plt.xlabel('Date')
plt.xticks(sr.index[::4]) #Show one in every four dates
plt.ylabel('Sales')
输出:
此外,如果要设置记号数,可以使用定位器参数:
输出:
您可能希望将字符串转换为实际日期。然后matplotlib将自动在轴上显示不超过10个日期。此外,它将确保点的间距正确,例如,如果它们不是等距的。可能重复的感谢这帮助了我!但是你的代码的第一部分并不能产生你所画的图形。我不得不将行更改为:plt.xtickssr.index[::4],sr.index[::4]以使其正常工作。在你这边没有它的情况下它有用吗?真奇怪,它对我有用,就像我把它贴在我这边一样。可能是不同的matplotlib版本?
sr.plot(xticks=sr.reset_index().index)
plt.locator_params(axis='x', nbins=5) #Show five dates
plt.ylabel('Sales')
plt.xlabel('Date')