在matplotlib中绘制散点图,x轴为日期,y轴为数值

yqhsw0fo  于 2023-10-24  发布在  其他
关注(0)|答案(4)|浏览(105)

我在制作一个散点图时遇到了麻烦,该散点图包含一个日期数组和一堆PM 2.5值。我的列表如下所示:

dates = ['2015-12-20','2015-09-12']  
PM_25 = [80, 55]
c0vxltue

c0vxltue1#

import pandas as pd
dates = ['2015-12-20','2015-09-12']  
PM_25 = [80, 55]
dates = [pd.to_datetime(d) for d in dates]

plt.scatter(dates, PM_25, s =100, c = 'red')

s设置大小c设置颜色
还有很多其他的参数:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter

bq8i3lrv

bq8i3lrv2#

如果图中的数据包含日期,则可以使用**plot_date**
类似于plot()命令,除了x或y(或两者)数据被认为是日期,并且轴被标记。
首先将列表转换为日期时间,如@RSHARP所示,

dates = [pd.to_datetime(d) for d in dates]

你可以使用plot_date

plt.plot_date(dates, PM_25, c = 'red')
xwmevbvl

xwmevbvl3#

一个Pandas的框架通常是更常见的。所以它对我来说是有效的:

import pandas as pd
dates = ['2015-12-20','2015-09-12']  
PM_25 = [80, 55]
data = pd.DataFrame({'dates':pd.to_datetime(dates),'PM_25':PM_25})
data.plot(x='dates',y='PM_25',marker='o',linestyle='none')

你可以这样定义:

data.plot(x='dates',y='PM_25',marker='o',linestyle='none',color='red',ms=3)
qvsjd97n

qvsjd97n4#

显然,在图书馆最近的几次更新后,其他答案不起作用。
使用@Apex,我们可以得到以下结果:

df = ...
plt.scatter(list(df.time.values),list(df.y.values),color='r')

在这种情况下,您可能会得到以下错误:

ConversionError: Failed to convert value(s) to axis units: ...

基本上,对datetime64[us]类型有一个检查。如果你预先将数据转换为这种类型,你将避免库中的错误代码部分。
因此,以下代码目前运行良好:

df = ...
plt.scatter(list(df.time.astype('datetime64[us]').values),list(df.y.values),color='r')

相关问题