1

我的 python matplotlib 脚本:

plt.plot(graphdf["Price"],color='red')
plt.xticks(rotation=90)

在动态减少刻度数方面需要帮助,我的程序连续抓取数据,并且在绘制数据时 x 轴在一段时间后变得混乱,例如在 40 个 xtick 标签之后。

(我没有固定数量的数据点,每次我的程序抓取额外数据时它都会不断增长例如:在 9:37 我将只有 3 个数据点,在 9:45 我将有 5 个数据点等。我在下图中连续绘制它)

我有一个简单的数据集,它的价格与时间(股票市场价格)如下所示:
熊猫数据框

我的图表是这样的
价格与时间数据图

4

1 回答 1

3

选项1:x轴datetime类型

回答

我想你的数据在一个名为data.csv. 如果使用 加载,则pd.read_csv需要注意'Time'列的格式。查看以下输出:

print(graphdf.info())

如果该DType'Time'的 是objectpandas则将该列的值标识为str。在这种情况下,您需要将它们转换为datetime

graphdf['Time'] = pd.to_datetime(graphdf['Time'], format = '%H:%M')

最后,您可以设置您在 x 轴上看到的标签的格式:

ax.xaxis.set_major_formatter(md.DateFormatter('%H:%M'))

检查此答案以供参考。


整个代码

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as md

graphdf = pd.read_csv('data.csv')
graphdf['Time'] = pd.to_datetime(graphdf['Time'], format = '%H:%M')

fig, ax = plt.subplots()

ax.plot(graphdf['Time'],graphdf['Price'],color='red')
plt.xticks(rotation=90)
ax.xaxis.set_major_formatter(md.DateFormatter('%H:%M'))

plt.show()

阴谋

在此处输入图像描述


选项2:x轴str类型

回答

如果您不希望 x 轴作为一般%H:%M时间轴,但您想保留原始刻度,则必须将 x 轴作为一种str类型并简单地对原始刻度进行采样,然后将它们应用于轴:

xticks = graphdf['Time'][::2]
ax.set_xticks(xticks)

您可以用切片原始刻度[::n],步骤在哪里n。如果n = 2您选择替代刻度;如果n = 3您每 3 次选择一个刻度,依此类推。

整个代码

import pandas as pd
import matplotlib.pyplot as plt

graphdf = pd.read_csv('data.csv')

fig, ax = plt.subplots()

ax.plot(graphdf['Time'],graphdf['Price'],color='red')
plt.xticks(rotation=90)
xticks = graphdf['Time'][::2]
ax.set_xticks(xticks)

plt.show()

阴谋

在此处输入图像描述

于 2020-08-05T15:04:01.977 回答