import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
生成的图像:
这和散点图一样:
import datetime
import random
import matplotlib.pyplot as plt
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
plt.show()
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(minutes=i) for i in range(12)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot([],[])
plt.scatter(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.show()
plt.close()
5条答案
按热度按时间xbp102n01#
更新:
这个答案自matplotlib 3.5版以来已经过时了。
plot
函数现在直接处理日期时间数据。请参阅https://matplotlib.org/3.5.1/api/_as_gen/matplotlib.pyplot.plot_date.html不建议使用plot_date。此方法的存在是由于历史原因,将来可能会弃用。
类似日期时间的数据应该直接使用plot绘制。
如果需要将普通数值数据绘制为Matplotlib日期格式或需要设置时区,请在绘制前调用ax.xaxis.axis_date / ax.yaxis.axis_date。请参见Axis.axis_date。
你必须先将你的时间戳转换成Python
datetime
对象(使用datetime.strptime
)。然后使用date2num
将日期转换成matplotlib格式。使用
plot_date
绘制日期和值:vu8f3i0k2#
您还可以使用pyplot.plot绘制时间戳、值对(从字符串表示解析它们之后)(使用matplotlib版本1.2.0和1.3.1测试)。
示例:
生成的图像:
这和散点图一样:
生成类似于以下内容的图像:
omqzjyyz3#
7年过去了,这段代码帮助了我。然而,我的时间仍然没有正确显示。
使用Matplotlib 2.0.0,我不得不添加以下来自Paul H.
我将格式更改为(%H:%M),时间显示正确。
这一切都要感谢社区。
kcwpcxri4#
我在使用matplotlib版本时遇到了麻烦:2.0.2.运行上面的例子,我得到了一组居中的气泡。
我通过添加另一行来“修复”这个问题:
整个代码段变为:
这将产生气泡按需要分布的图像。
jtoj6r0c5#
Pandas dataframes还没有被提到。我想展示这些是如何解决我的datetime问题的。我的datetime是毫秒
2021-04-01 16:05:37
。我从/proc中提取linux/haproxy吞吐量,所以我可以真正地格式化它。这对于将数据馈送到实时图形动画中很好。下面是csv(忽略我在另一个图中使用的每秒数据包数)
通过使用
print(dataframe.dtype)
,我可以看到数据是如何读入的:Pandas将日期字符串作为“object”拉入,它只是char类型。在脚本中使用这个:
Matplotlib渲染所有毫秒级的时间数据。我添加了
plt.xticks(rotation=45)
来倾斜日期,但这不是我想要的。我可以将日期“对象”转换为datetime 64 [ns]。matplotlib确实知道如何渲染。这次我的约会类型是
datetime64[ns]
相同的脚本,只有一行不同。
这可能不是你的理想用例,但它可能会帮助其他人。