Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在使用matplotlib打印时在x轴上打印等距值_Python_Python 3.x_Pandas_Matplotlib - Fatal编程技术网

Python 如何在使用matplotlib打印时在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

我有一个超过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     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')