Matplotlib 中 x 轴标签的频率和旋转
Frequency and rotation of x-axis labels in Matplotlib
我在下面写了一个简单的脚本来用 matplotlib 生成图形。我想将 x-tick 频率从每月增加到每周并旋转标签。我不确定从哪里开始处理 x 轴频率。我的旋转线产生错误:TypeError: set_xticks() got an unexpected keyword argument 'rotation'
。对于旋转,我宁愿不使用 plt.xticks(rotation=70)
,因为我最终可能会构建多个子图,其中一些应该有一个旋转轴,而一些不应该。
import datetime
import matplotlib
import matplotlib.pyplot as plt
from datetime import date, datetime, timedelta
def date_increments(start, end, delta):
curr = start
while curr <= end:
yield curr
curr += delta
x_values = [[res] for res in date_increments(date(2014, 1, 1), date(2014, 12, 31), timedelta(days=1))]
print len(x_values)
y_values = [x**2 for x in range(len(x_values))]
print len(y_values)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x_values, y_values)
ax.set_xticks(rotation=70)
plt.show()
看看 matplotlib.dates
,尤其是 this example。
勾选频率
您可能想做这样的事情:
from matplotlib.dates import DateFormatter, DayLocator, MonthLocator
days = DayLocator()
months = MonthLocator()
months_f = DateFormatter('%m')
ax.xaxis.set_major_locator(months)
ax.xaxis.set_minor_locator(days)
ax.xaxis.set_major_formatter(months_f)
ax.xaxis_date()
这会将天绘制为次要刻度,将月绘制为主要刻度,并标有月份编号。
标签的旋转
您可以使用plt.setp()
单独更改坐标轴:
plt.setp(ax.get_xticklabels(), rotation=70, horizontalalignment='right')
希望对您有所帮助。
我在下面写了一个简单的脚本来用 matplotlib 生成图形。我想将 x-tick 频率从每月增加到每周并旋转标签。我不确定从哪里开始处理 x 轴频率。我的旋转线产生错误:TypeError: set_xticks() got an unexpected keyword argument 'rotation'
。对于旋转,我宁愿不使用 plt.xticks(rotation=70)
,因为我最终可能会构建多个子图,其中一些应该有一个旋转轴,而一些不应该。
import datetime
import matplotlib
import matplotlib.pyplot as plt
from datetime import date, datetime, timedelta
def date_increments(start, end, delta):
curr = start
while curr <= end:
yield curr
curr += delta
x_values = [[res] for res in date_increments(date(2014, 1, 1), date(2014, 12, 31), timedelta(days=1))]
print len(x_values)
y_values = [x**2 for x in range(len(x_values))]
print len(y_values)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x_values, y_values)
ax.set_xticks(rotation=70)
plt.show()
看看 matplotlib.dates
,尤其是 this example。
勾选频率
您可能想做这样的事情:
from matplotlib.dates import DateFormatter, DayLocator, MonthLocator
days = DayLocator()
months = MonthLocator()
months_f = DateFormatter('%m')
ax.xaxis.set_major_locator(months)
ax.xaxis.set_minor_locator(days)
ax.xaxis.set_major_formatter(months_f)
ax.xaxis_date()
这会将天绘制为次要刻度,将月绘制为主要刻度,并标有月份编号。
标签的旋转
您可以使用plt.setp()
单独更改坐标轴:
plt.setp(ax.get_xticklabels(), rotation=70, horizontalalignment='right')
希望对您有所帮助。