简体   繁体   English

如何在x轴上绘制日期

[英]How to plot date at x axis

So I have this df with the first column called "Week": 因此,我在第一周的“星期”这一列中有了这个df:

0     2018-01-07
1     2018-01-14
2     2018-01-21
3     2018-01-28
4     2018-02-04
5     2018-02-11
6     2018-02-18
7     2018-02-25
8     2018-03-04
9     2018-03-11
10    2018-03-18
11    2018-03-25
12    2018-04-01
13    2018-04-08
14    2018-04-15
15    2018-04-22
16    2018-04-29
17    2018-05-06
Name: Week, dtype: object

And other three columns with different names and intergers as values. 和其他三列以不同的名称和整数作为值。 My ideia is to plot these dates at X axis and the other 3 columns with ints at Y. I've tried everything I found but nothing have worked yet... 我的想法是在X轴上绘制这些日期,在Y上用int绘制其他3列。我已经尝试了所有发现的内容,但仍无济于事。

I did: 我做了:

df.set_index('Week')
df.plot()
plt.show()

Which worked very well, but X axis stil a float in range(0, 17)... 效果很好,但是X轴在(0,17)范围内浮动了...

I also tried: 我也尝试过:

df['Week'] = pd.to_datetime(df['Week'])
df.set_index('Week')
df.plot()
plt.show()

But I got this error: 但是我得到了这个错误:

Traceback (most recent call last):
  File "C:\Users\mar\Desktop\Web Dev\PJ E\EZA.py", line 33, in <module>
    df.plot()
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\plotting\_core.py", line 2677, in __call__
    sort_columns=sort_columns, **kwds)
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\plotting\_core.py", line 1902, in plot_frame
    **kwds)
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\plotting\_core.py", line 1729, in _plot
    plot_obj.generate()
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\plotting\_core.py", line 258, in generate
    self._post_plot_logic_common(ax, self.data)
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\plotting\_core.py", line 397, in _post_plot_logic_common
    self._apply_axis_properties(ax.yaxis, fontsize=self.fontsize)
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\plotting\_core.py", line 470, in _apply_axis_properties
    labels = axis.get_majorticklabels() + axis.get_minorticklabels()
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\axis.py", line 1188, in get_majorticklabels
    ticks = self.get_major_ticks()
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\axis.py", line 1339, in get_major_ticks
    numticks = len(self.get_major_locator()())
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\dates.py", line 1054, in __call__
    self.refresh()
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\dates.py", line 1074, in refresh
    dmin, dmax = self.viewlim_to_dt()
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\dates.py", line 832, in viewlim_to_dt
    return num2date(vmin, self.tz), num2date(vmax, self.tz)
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\dates.py", line 441, in num2date
    return _from_ordinalf(x, tz)
  File "C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site-packages\matplotlib\dates.py", line 256, in _from_ordinalf
    dt = datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
ValueError: ordinal must be >= 1

Thanks in advance. 提前致谢。

you can do something like this below: 您可以在下面执行以下操作:

df['Week'] = pd.to_datetime(df['Week'])
df.set_index('Week', inplace=True)
df.plot()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM