Как вращать matplotlib xaxis minorticklabel? - PullRequest
0 голосов
/ 23 марта 2020

Я использую следующие коды, чтобы вращать 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

Скрипт для имитации проблемы:

#!/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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...