简体   繁体   中英

Rotate minor ticks in matplotlib

I am plotting the following chart :

在此处输入图片说明

with the following code:

fig, ax = plt.subplots(figsize=(20, 3))
mpf.candlestick_ohlc(ax,quotes, width=0.01)
ax.xaxis_date()
ax.xaxis.set_minor_locator(mpl.dates.HourLocator(interval=4) )
ax.xaxis.set_minor_formatter(mpl.dates.DateFormatter('%H:%M')) 
plt.xticks(rotation = 90)

plt.grid(True)
plt.show()

I would like to also rotate the minor ticks: How would i do that?

Subsidiary question is there a way to rotate both major and minor tick with a single command?

您可以通过一行plt.setp(ax.xaxis.get_minorticklabels(), rotation=90)的代码进行plt.setp(ax.xaxis.get_minorticklabels(), rotation=90)

While dealing with the problem myself, I discovered that you can also easily accomplish this with a single statement using the tick_params :

ax.tick_params(axis="x", which="both", rotation=45)

This will rotate labels on your x axis , and the which option allows you to choose between minor, major or both. In case you have multiple plots you will have to do this for every plot in the figure.

By exploring a little, I discovered that ax.get_xminorticklabels() is a list with a text class element.

>>> print(type(ax.get_xminorticklabels()[0])) 
<class 'matplotlib.text.Text'>

And text can be rotated !

>>> for text in ax.get_xminorticklabels():
>>>     text.set_rotation(90)

xminorticklabels_rotate_example

You only have to be careful that they do not overlap.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM