Python 如何在x轴上绘制日期

Python 如何在x轴上绘制日期,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个df,第一列叫做“Week”: 以及其他三列,它们的值是不同的名称和整数。 我的想法是在X轴绘制这些日期,在Y轴绘制其他3列的整数。 我已经尝试了我发现的一切,但没有任何效果 我做到了: df.set_index('Week') df.plot() plt.show() 它工作得很好,但是X轴仍然在(0,17)范围内浮动 我还尝试: df['Week'] = pd.to_datetime(df['Week']) df.set_index('Week') df.plot() plt.sh

我有一个df,第一列叫做“Week”:

以及其他三列,它们的值是不同的名称和整数。 我的想法是在X轴绘制这些日期,在Y轴绘制其他3列的整数。 我已经尝试了我发现的一切,但没有任何效果

我做到了:

df.set_index('Week')
df.plot()
plt.show()
它工作得很好,但是X轴仍然在(0,17)范围内浮动

我还尝试:

df['Week'] = pd.to_datetime(df['Week'])
df.set_index('Week')
df.plot()
plt.show()
但我有一个错误:

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
回溯(最近一次呼叫最后一次):
文件“C:\Users\mar\Desktop\Web Dev\PJ E\EZA.py”,第33行,在
df.plot()
文件“C:\Users\mar\AppData\Local\Programs\Python36-32\lib\site packages\pandas\plotting\\ u core.py”,第2677行,在__
排序列=排序列,**kwds)
文件“C:\Users\mar\AppData\Local\Programs\Python36-32\lib\site packages\pandas\plotting\\ u core.py”,第1902行,在plot\ u框架中
**kwds)
文件“C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site packages\pandas\plotting\\ u core.py”,第1729行,在\ u plot中
绘图对象生成()
文件“C:\Users\mar\AppData\Local\Programs\Python36-32\lib\site packages\pandas\plotting\\ u core.py”,第258行,在generate中
self.\u post\u plot\u logic\u common(ax、self.data)
文件“C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site packages\pandas\plotting\u core.py”,第397行,位于“后绘图逻辑”公共部分
self.\u应用\u轴属性(ax.yaxis,fontsize=self.fontsize)
文件“C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site packages\pandas\plotting\u core.py”,第470行,位于“应用轴”属性中
labels=axis.get_majorticklabels()+axis.get_minorticklabels()
文件“C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site packages\matplotlib\axis.py”,第1188行,位于get_majorticklabels中
ticks=self.get_major_ticks()
文件“C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site packages\matplotlib\axis.py”,第1339行,在get\u major\u ticks中
numticks=len(self.get\u major\u locator())
文件“C:\Users\mar\AppData\Local\Programs\Python36-32\lib\site packages\matplotlib\dates.py”,第1054行,在调用中__
self.refresh()
文件“C:\Users\mar\AppData\Local\Programs\Python36-32\lib\site packages\matplotlib\dates.py”,第1074行,刷新
dmin,dmax=self.viewlim_to_dt()
文件“C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site packages\matplotlib\dates.py”,第832行,在viewlim\u to\u dt中
返回num2日期(vmin,self.tz),num2日期(vmax,self.tz)
文件“C:\Users\mar\AppData\Local\Programs\Python36-32\lib\site packages\matplotlib\dates.py”,第441行,num2date格式
从顺序lf(x,tz)返回
文件“C:\Users\mar\AppData\Local\Programs\Python\Python36-32\lib\site packages\matplotlib\dates.py”,第256行,从
dt=datetime.datetime.fromordinal(ix).replace(tzinfo=UTC)
ValueError:序号必须大于等于1

提前感谢。

您可以执行以下操作:

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

尝试使用plt.plot(df['date'],df['count'])df['count']代表什么?将
Week
列转换为
df['Week']=pd.to_datetime(df.Week)的datetime
然后,您设置索引和绘图的第一种方法应该可以正常工作,但没有问题。我们尝试了ALollz sugestion,它返回了以下错误:ValueError:ordinal必须>=1您需要将行更改为:
df=df.set_index('Week')
。但是默认情况下,
set\u index
返回一个副本,因此在当前代码中打印之前,实际上没有设置索引。
df['Week'] = pd.to_datetime(df['Week'])
df.set_index('Week', inplace=True)
df.plot()