【发布时间】:2014-08-15 19:37:07
【问题描述】:
我在 for 循环中创建了一个绘图,其中将日期时间列表作为 x 值。 x 刻度标记为日期,但我想显示小时(即 6、12、18、24 重复)。我还想将 xlim 设置为比数据集更宽,以便所有数据点都在轴内(而不是在边缘上)。我会发布这个数字,但这是我在 stackoverflow 上的第一个问题,所以这是不允许的。
【问题讨论】:
标签: python datetime matplotlib
我在 for 循环中创建了一个绘图,其中将日期时间列表作为 x 值。 x 刻度标记为日期,但我想显示小时(即 6、12、18、24 重复)。我还想将 xlim 设置为比数据集更宽,以便所有数据点都在轴内(而不是在边缘上)。我会发布这个数字,但这是我在 stackoverflow 上的第一个问题,所以这是不允许的。
【问题讨论】:
标签: python datetime matplotlib
您第一次这样做时会感到困惑,但为此使用显式格式化程序和定位器是最简单的。要防止点接触边界,请使用ax.margins(pad) 或等效的plt.margins(pad)。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
dates = pd.date_range('01/01/2014', '01/05/2014', freq='1H')
y = np.random.random(dates.size)
locator = mdates.HourLocator(range(0, 24, 6))
formatter = mdates.DateFormatter('%H')
fig, ax = plt.subplots()
ax.plot(dates, y, 'ko')
ax.margins(0.05) # Keep points from touching margin of plot
ax.xaxis.set(major_formatter=formatter, major_locator=locator)
plt.show()
或者您可能更喜欢这样显示小时数:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
dates = pd.date_range('01/01/2014', '01/05/2014', freq='1H')
y = np.random.random(dates.size)
locator = mdates.HourLocator(range(0, 24, 6))
formatter = mdates.DateFormatter('%H:%M')
fig, ax = plt.subplots()
ax.plot(dates, y, 'ko')
ax.margins(0.05) # Keep points from touching margin of plot
ax.xaxis.set(major_formatter=formatter, major_locator=locator)
fig.autofmt_xdate() # Quick way of rotating tick labels
plt.show()
【讨论】: