我想要一个散点图,其中 x 轴是一个 datetime
,y 轴是一个 int
。而且我只有几个离散且不连续的数据点,所以我不想连接数据点。
我的数据框是:
df = pd.DataFrame({'datetime':[dt.datetime(2016,1,1,0,0,0), dt.datetime(2016,1,4,0,0,0),
dt.datetime(2016,1,9,0,0,0)], 'value':[10, 7, 8]})
如果我使用“正常”图而不是“线”图:
df.plot(x='datetime', y='value')
但是我怎样才能只绘制点呢?这给出了错误:
df.plot.scatter(x='datetime', y='value')
KeyError: 'datetime'
当然我可以使用一些作弊来得到我想要的结果,例如:
df.plot(x='datetime', y='value', marker='o', linewidth=0)
但我不明白为什么 scatter
版本不起作用...
谢谢你的帮助!
可以使用 DataFrame.plot.scatter() 方法绘制散点图。散点图需要 numeric 列用于 x 和 y 轴。这些可以分别由 x 和 y 关键字指定。
替代方法:
In [71]: df['day'] = df['datetime'].dt.day
In [72]: df.plot.scatter(x='day', y='value')
Out[72]: <matplotlib.axes._subplots.AxesSubplot at 0x25440a1bc88>

我是一名优秀的程序员,十分优秀!