gpt4 book ai didi

python - 在 matplotlib 中绘制时间图的 X 代码问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:20:25 26 4
gpt4 key购买 nike

我正在尝试编写一个定义函数,通过导入的 csv 文件的数据绘制折线图。

这是我的数据的一个小样本(每分钟的温度读数):-

00:01:00.0305040, 35.35985
00:02:00.0438094, 35.48547
00:03:00.0571148, 35.65295
00:04:00.0704203, 35.90417
00:05:00.0837257, 36.23914
.
.
.
.
08:52:07.2370729, 74.92772
08:53:07.2503783, 75.01146
08:54:07.2648837, 75.05333
08:55:07.2781891, 75.0952
08:56:07.2914945, 75.0952

当我尝试将 x 股票设置为每小时出现一次时,它们不会显示在绘制的图表中。

这是我的代码

df = pd.read_csv(file,names=["time", "temp"])
df["time"]=pd.to_datetime(df["time"])
df=df.set_index('time')
df.index = df.index.map (lambda t: t.strftime('%H:%M'))
print(df)
fig, ax = plt.subplots()
df.plot(ax = ax, color = 'black', linewidth = 0.4, x_compat=True)
ax.set(xlabel='Time (Hour:Minutes)', ylabel='Temperature (Celsius)')
ax.xaxis.set_major_locator(mdates.HourLocator(interval = 1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
fig.autofmt_xdate()
return plt.show()

我尝试过手动标记 x 代码

plt.xticks(['0:00', '1:00', '2:00', '3:00', '4:00:0', '5:00', '6:00:0', '7:00', '8:00', '9:00', '10:00'])

它确实有效,但是对于任何特定情况都有办法吗?

最佳答案

根据官方文档

All of plotting functions expect np.array or np.ma.masked_array as input. Classes that are 'array-like' such as pandas data objects and np.matrix may or may not work as intended. It is best to convert these to np.array objects prior to plotting.

所以我稍微改变了你的代码(基本上将 pd df 转换为 numpy 数组)。

df = pd.read_csv(file,names=["time", "temp"])
df["time"]=pd.to_datetime(df["time"])
x_axis = np.array(df.time.values)
y_axis = np.array(df.temp.values)
fig, ax = plt.subplots()
ax.plot(x_axis,y_axis)
ax.set(xlabel='Time (Hour:Minutes)', ylabel='Temperature (Celsius)')
ax.xaxis.set_major_locator(mdates.HourLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
plt.show()

现在可以看到刻度线,如下所示。

enter image description here

关于python - 在 matplotlib 中绘制时间图的 X 代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58194821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com