python - 减少matplotlib中的X轴

标签 python matplotlib

当值很大时如何减少 matplotlib 中的 X 轴?

我想展示,例如:

2020-04-04 9:00:01, 2020-04-04 9:20:01, 2020-04-04 9:40:01...

因此,数据不会分组。

示例脚本:

try:
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib import rc

except ImportError as e:
    print("[ALERT] Error import caused by: {}".format(e))
    sys.exit()

valueA = [8,9,10,9,8,8,9,10,9,8,8,9,10,9,8,8,9,10,9,8,8,9,10,9,8]
valueB = [8,9,10,9,8,8,9,10,9,8,8,9,10,9,8,8,9,10,9,8,8,9,10,9,8]

time = pd.date_range(start = '2020-04-04 9:00:01', periods = 50, freq='T')
x_plot = range(len(time))

plt.plot(np.arange(0, len(valueA)), valueA, 'g', label="valueA")
plt.plot(np.arange(len(valueA), len(valueA) + len(valueB)), valueB, 'r', label="valueB")
plt.xticks(rotation=90)
plt.xticks(x_plot, time)
plt.ylabel('Value')
plt.xlabel('Time Step')
plt.legend()
plt.show()

结果:

enter image description here

最佳答案

使用 matplotlib.dates,我使用 date2num 更改 X 值,然后使用 DateFormater 格式化 xaxisMinuteLocatorbymonth 选项。我终于调用了 autofmt_xdate()

try:
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib import rc
    import matplotlib.dates as mdates

except ImportError as e:
    print("[ALERT] Error import caused by: {}".format(e))
    sys.exit()

valueA = [8,9,10,9,8,8,9,10,9,8,8,9,10,9,8,8,9,10,9,8,8,9,10,9,8]
valueB = [8,9,10,9,8,8,9,10,9,8,8,9,10,9,8,8,9,10,9,8,8,9,10,9,8]

time = pd.date_range(start = '2020-04-04 9:00:01', periods = 50, freq='T')
X = mdates.date2num(time)

plt.plot(X[:len(valueA)], valueA, 'g', label="valueA")
plt.plot(X[len(valueA):], valueB, 'r', label="valueB")

plt.ylabel('Value')
plt.xlabel('Time Step')
plt.legend()

ax = plt.gca()
fmt = mdates.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(fmt)
m = mdates.MinuteLocator(byminute=range(0, 50, 20))
ax.xaxis.set_major_locator(m)
ax.xaxis_date()

fig = plt.gcf()
fig.autofmt_xdate()

plt.show()

enter image description here

关于python - 减少matplotlib中的X轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61671017/

相关文章:

python - 绕过 dok_matrix.get 类型检查

python - 向 matplotlib/seaborn 图中的某些单元格添加自定义边框

python - 根据时间增量值生成绘图

python - plt.save 保存不同的图像

python - 通过 Python 调用的 C 函数确定错误的数组大小

python - 使用 Python 在目录中监视文件,然后使用 POST 请求发送文件修改数据

python - 如何使用 matplotlib 设置 x 轴的时间间隔,例如 15 分钟

python - 添加 UTC 时间轴以以时间格式绘制本地时间

python - 在 Google Colab 上创建 SparkContext 给出 : `RuntimeError: Java gateway process exited before sending its port number`

python - 将误差线添加到 Pandas 中的分组条形图