Python 如何在matplotlib中绘制日期

Python 如何在matplotlib中绘制日期,python,matplotlib,Python,Matplotlib,我需要创建一个三维折线图,其中x轴是日期,y轴是销售,z轴是ID。我使用了以下代码: # Data for a three-dimensional line zline = df_csv['loc id'] xline = df_csv['date'] yline = df_csv['total_sales'] ax.plot3D(xline, yline, zline, 'gray') 这是它生成的错误: ValueErrorTraceback (most recent call last

我需要创建一个三维折线图,其中x轴是日期,y轴是销售,z轴是ID。我使用了以下代码:

# Data for a three-dimensional line
zline = df_csv['loc id']
xline = df_csv['date']
yline = df_csv['total_sales']
ax.plot3D(xline, yline, zline, 'gray')
这是它生成的错误:

 ValueErrorTraceback (most recent call last)
    <ipython-input-10-f2edc42bd85e> in <module>()
      4 xline = df_csv['date']
      5 yline = df_csv['total_sales']
----> 6 ax.plot3D(xline, yline, zline, 'gray')
      7 
      8 # Data for three-dimensional scattered points

C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site-packages\mpl_toolkits\mplot3d\axes3d.pyc in plot(self, xs, ys, *args, **kwargs)
   1570 
   1571         xs, ys, zs = art3d.juggle_axes(xs, ys, zs, zdir)
-> 1572         self.auto_scale_xyz(xs, ys, zs, had_data)
   1573         return lines
   1574 

C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site-packages\mpl_toolkits\mplot3d\axes3d.pyc in auto_scale_xyz(self, X, Y, Z, had_data)
    500         # to what the minimum sized rectangular volume holds the
    501         # data.
--> 502         self.xy_dataLim.update_from_data_xy(np.array([x, y]).T, not had_data)
    503         if z is not None:
    504             self.zz_dataLim.update_from_data_xy(np.array([z, z]).T, not had_data)

C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site-packages\matplotlib\transforms.pyc in update_from_data_xy(self, xy, ignore, updatex, updatey)
    925             return
    926 
--> 927         path = Path(xy)
    928         self.update_from_path(path, ignore=ignore,
    929                                     updatex=updatex, updatey=updatey)

C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site-packages\matplotlib\path.pyc in __init__(self, vertices, codes, _interpolation_steps, closed, readonly)
    130             and codes as read-only arrays.
    131         """
--> 132         vertices = _to_unmasked_float_array(vertices)
    133         if (vertices.ndim != 2) or (vertices.shape[1] != 2):
    134             raise ValueError(

C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site-packages\matplotlib\cbook\__init__.pyc in _to_unmasked_float_array(x)
   2050         return np.ma.asarray(x, float).filled(np.nan)
   2051     else:
-> 2052         return np.asarray(x, float)
   2053 
   2054 

C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site-packages\numpy\core\numeric.pyc in asarray(a, dtype, order)
    536 
    537     """
--> 538     return array(a, dtype, copy=False, order=order)
    539 
    540 

ValueError: invalid literal for float(): 1/1/2016
ValueErrorTraceback(最近一次调用上次)
在()
4 xline=df_csv[“日期”]
5 yline=df_csv[“总销售额”]
---->6 ax.plot3D(xline、yline、zline、“灰色”)
7.
8#三维散乱点数据
C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site packages\mpl_工具包\mplot3d\axes3d.pyc在绘图中(self、xs、ys、*args、**kwargs)
1570
1571 xs,ys,zs=art3d.杂耍_轴(xs,ys,zs,zdir)
->1572自动缩放xyz(xs、ys、zs、had_数据)
1573回油管
1574
C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site packages\mpl\u工具包\mplot3d\axes3d.pyc自动缩放(self、X、Y、Z、had\u数据)
500#最小尺寸的矩形体积容纳
501#数据。
-->502 self.xy\u dataLim.update\u from\u data\u xy(np.array([x,y]).T,没有\u数据)
503如果z不是无:
504 self.zz_dataLim.update_from_data_xy(np.array([z,z]).T,没有_数据)
C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site packages\matplotlib\transforms.pyc在更新\u from\u data\u xy中(self、xy、ignore、updatex、updatey)
925返回
926
-->927路径=路径(xy)
928 self.update_from_path(path,ignore=ignore,
929 updatex=updatex,updatey=updatey)
C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site packages\matplotlib\path.pyc在uuuu init_uuuuu中(self、顶点、代码、插值步骤、闭合、只读)
130和代码作为只读数组。
131         """
-->132个顶点=\u到\u无遮罩\u浮动\u数组(顶点)
133如果(顶点.ndim!=2)或(顶点.shape[1]!=2):
134升值误差(
C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site packages\matplotlib\cbook\ \uuuuuuu init\uuuuuuuu.pyc in\u to\u unmasked\u float\u数组(x)
2050返回np.ma.asarray(x,浮动)。填充(np.nan)
2051其他:
->2052返回np.asarray(x,浮动)
2053
2054
asarray中的C:\Users\fatima.arshad\AppData\Local\Continuum\anaconda2\lib\site packages\numpy\core\numeric.pyc(a,数据类型,顺序)
536
537     """
-->538返回数组(a,数据类型,copy=False,order=order)
539
540
ValueError:float()的文本无效:1/1/2016

如何合并日期?它应该显示精确日期的点,而不是四舍五入到年。

必须首先将datetime转换为python datetime

xline = matplotlib.dates.date2num(pd.to_datetime(df_csv['date']))

try float(date.toordinal())的可能副本,用于将z值转换为float@SuperKogito尝试了以下操作:xline=matplotlib.dates.date2num(df_csv['date'])。它给出了以下错误:AttributeError:'str'对象没有属性'toordinal'@abhilb这是它给出的错误:AttributeError:'Series'对象没有属性'toordinal'