我有一个格式为(HH:MM:SS.mmmmmm)的时间戳数组和另一个浮点数数组,每个数组对应于时间戳数组中的一个值。
我可以使用Matplotlib绘制x轴上的时间和y轴上的数字吗?
我试图这样做,但不知何故,它只接受浮点数组。我怎么才能让它画出时间呢?我必须以任何方式修改格式吗?
发布于 2009-10-15 10:18:26
您必须首先将时间戳转换为Python datetime
对象(使用datetime.strptime
)。然后使用date2num
将日期转换为matplotlib格式。
使用plot_date
绘制日期和值
import matplotlib.pyplot
import matplotlib.dates
from datetime import datetime
x_values = [datetime(2021, 11, 18, 12), datetime(2021, 11, 18, 14), datetime(2021, 11, 18, 16)]
y_values = [1.0, 3.0, 2.0]
dates = matplotlib.dates.date2num(x_values)
matplotlib.pyplot.plot_date(dates, y_values)
发布于 2017-07-13 21:05:01
7年后,这段代码帮了我大忙。然而,我的时间仍然没有正确显示。
使用Matplotlib2.0.0,我不得不添加来自Paul H的Editing the date formatting of x-axis tick labels in matplotlib的以下代码。
import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
我将格式更改为(%H:%M),并且时间显示正确。
这一切都要感谢社区。
发布于 2017-09-28 11:21:40
我在使用matplotlib版本: 2.0.2时遇到了问题。运行上面的示例,我得到了一组居中堆叠的气泡。
我通过添加另一行“修复”了这个问题:
plt.plot([],[])
整个代码片段变成:
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()
这将生成一个图像,其中的气泡按所需方式分布。
https://stackoverflow.com/questions/1574088
复制相似问题