当值很大时如何减少 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()
结果:
最佳答案
使用 matplotlib.dates
,我使用 date2num
更改 X 值,然后使用 DateFormater
格式化 xaxis
并MinuteLocator
与 bymonth
选项。我终于调用了 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()
关于python - 减少matplotlib中的X轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61671017/