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

标签 python csv matplotlib plot linegraph

我正在尝试编写一个定义函数,通过导入的 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/

相关文章:

python - matplotlib:一张图上的多个图

python - 美丽汤不会返回结果

.net - 数据表转CSV

python - 读取 CSV 文件中的行并附加列表会为每个值创建一个列表列表

python - 使用 y 选项时将图例添加到 pandas.dataframe.plot

python-3.x - 如何在 matplotlib pyplot 中保持 x 轴的不同值

python - ipython 中的调试器不工作

python - 设置 docker 容器,以便我可以访问 ubuntu 服务器上的 python 包

python - 访问 Google 搜索结果

python - 在 'for' 循环期间创建并写入新的 csv 文件