Python 如何在matplotlib中绘制日期
我需要创建一个三维折线图,其中x轴是日期,y轴是销售,z轴是ID。我使用了以下代码: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
# 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'