Я использую следующие коды, чтобы вращать 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' )
Но безрезультатно.
Изображение проблемы: ![xaxis_minorticklabel_issue](https://i.stack.imgur.com/30rMY.png)
Скрипт для имитации проблемы:
#!/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()