Поверните метки оси X на графике паразитов Matplotlib - PullRequest
0 голосов
/ 30 мая 2018

После того, как Томас очень услужливо решил мои проблемы, создав два паразитных субплота в в этом вопросе , я сейчас пытаюсь повернуть метки оси x на субплотах.

К сожалению, моя модификацияв примере кода здесь , кажется, не влияет на метки оси x:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA

host = host_subplot(111, axes_class=AA.Axes)
plt.subplots_adjust(right=0.75)

par1 = host.twinx()
par2 = host.twinx()

offset = 60
new_fixed_axis = par2.get_grid_helper().new_fixed_axis
par2.axis["right"] = new_fixed_axis(loc="right",
                                    axes=par2,
                                    offset=(offset, 0))

par1.axis["right"].toggle(all=True)
par2.axis["right"].toggle(all=True)

host.set_xlim(0, 2)
host.set_ylim(0, 2)

host.set_xlabel("Distance")
host.set_ylabel("Density")
par1.set_ylabel("Temperature")
par2.set_ylabel("Velocity")

p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")

par1.set_ylim(0, 4)
par2.set_ylim(1, 65)

host.legend()

host.axis["left"].label.set_color(p1.get_color())
par1.axis["right"].label.set_color(p2.get_color())
par2.axis["right"].label.set_color(p3.get_color())

plt.xticks(rotation = 45) #<- The only change from the example

plt.draw()
plt.show()  

дает не повернутые метки оси x в:

Output

Хотя я показал plt.xticks(rotation = 45), я также безуспешно пробовал другие способы работы с «обычными» графиками matplotlib.Кто-нибудь знает, есть ли способ сделать это, или я просто имею дело с большим количеством нишевого случая?Может быть, я должен просто придумать, как жить с использованием вспомогательных сюжетов и без паразитных осей?

Большое спасибо, Алекс

1 Ответ

0 голосов
/ 30 мая 2018

Существует два способа создания осей паразитов:

Здесь выиспользуют первый подход, который может быть немного неинтуитивным из-за использования специальных осей, предоставляемых инструментарием axisartist.

Решение 1:

Используйте обычный подход на основе вспомогательных участков, для которого все обычные способы вращения ярлыков работают просто отлично, например,

plt.setp(ax.get_xticklabels(), rotation=90)

Решение 2:

В случае, если вы хотите придерживаться подхода mpl_toolkits, вам нужнополучить тиклабели от axis через axis["right"].major_ticklabels,

plt.setp(par2.axis["bottom"].major_ticklabels, rotation=-135)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...