matplotlib - 如何旋转 matplotlib xaxis minorticklabel?
问题描述
我正在使用以下代码来旋转 xaxis minorticklabels,但无法使其正常工作。我究竟做错了什么?
fig.autofmt_xdate()
ax.xaxis.set_major_locator( mdates.WeekdayLocator( byweekday=SU, interval=1, tz=None ) )
ax.xaxis.set_major_formatter( mdates.DateFormatter("%b %d %a", tz=None) )
ax.xaxis.set_minor_locator( mdates.WeekdayLocator( byweekday=(MO, TU, WE, TH, FR, SA), interval=1, tz=None ) )
ax.xaxis.set_minor_formatter( mdates.DateFormatter("%a", tz=None) )
plt.setp( ax.get_xminorticklabels(), rotation=50, ha='right' ) # manual effor to rotate
我试过没有ax.autofmt_xdate()
和使用过
plt.setp( ax.get_xticklabels(), rotation=50, ha='right' )
但无济于事。
模拟问题的脚本:
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as ticker
from matplotlib.dates import MO, TU, WE, TH, FR, SA, SU
from datetime import datetime, timedelta
base = datetime.today()
numdays = 10
date_list = [base - timedelta(days=x) for x in range(numdays)]
ydata = [ 5, 16, 60, 30, 1, 56, 96, 27, 61, 50 ]
fig, ax = plt.subplots( figsize=(10,5), constrained_layout=False)
ax.set(title="Test" )
ax.get_yaxis().set_label_text( label='Y axis', fontweight='bold' )
ax.yaxis.set_major_locator( ticker.MultipleLocator(20) )
ax.yaxis.set_minor_locator( ticker.MultipleLocator(10) )
ax.get_xaxis().set_label_text( label='Days', fontweight='bold' )
plt.setp( ax.get_xminorticklabels(), rotation=50, ha='right' ) # manual control
plt.setp( ax.get_xticklabels(), rotation=50, ha='right' ) # manual control
#fig.autofmt_xdate()
ax.xaxis.set_major_locator( mdates.WeekdayLocator( byweekday=SU, interval=1, tz=None ) )
ax.xaxis.set_major_formatter( mdates.DateFormatter("%b %d %a", tz=None) )
ax.xaxis.set_minor_locator( mdates.WeekdayLocator( byweekday=(MO, TU, WE, TH, FR, SA), interval=1, tz=None ) )
ax.xaxis.set_minor_formatter( mdates.DateFormatter("%a", tz=None) )
ax.set_xlim( auto=True )
markerline, stemline, baseline = ax.stem( date_list, ydata, markerfmt='o', linefmt="-", basefmt="k-", label='Data',
use_line_collection=True )
plt.show()
解决方案
推荐阅读
- wordpress - 照片未在 Wordpress 媒体管理器中上传
- amazon-web-services - AWs lambda - 在 slack 中启用事件失败
- django - 如何将文本或二进制文件写入 Django 响应?
- python - 第 46 行文件 main.py 中以 '\xe4' 开头的非 UTF-8 代码,但未声明编码
- python - 以设定的频率随机替换值
- python - 向量化最大距离函数
- sql - MS Access 中交叉表列的动态减法
- docker - 有没有办法代理 docker 容器的 webUI 并需要密码?
- sql - Oracle Apex,尝试根据时间在 Checkbox 中选择值
- typescript - Typescript Infer 多个错误子类的返回值