python - Matplotlib 中 x 轴标签的频率和旋转

标签 python python-2.7 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')

希望这对您有所帮助。

关于python - Matplotlib 中 x 轴标签的频率和旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28062745/

相关文章:

python - 使用超网格搜索和 10 倍 CV 调整参数后,随机森林模型的 AUC 更低

python - 为什么 ax.patch 没有列在 plt.getp(ax) 的输出下?

python - 在 Ubuntu 18.04 上使用 Python3.6 安装 basemap

python - 如何使用 matplotlib 绘制复杂的条形图——具有多行条形的多个子图?

python - Django 1.7 的重构可调用

python - Django Tastypie : filter results for a GET call by looping over model. 对象.all()

python - Pyenv、Python安装失败: OpenSSL development header is not installed

Python 字典值检查不为空且不为空

python-2.7 - 在 Pandas 中执行 get_dummies 时保留其他变量

Python动态导入