Matplotlib: сочетание нескольких осейPython

Программы на Python
Ответить
Anonymous
 Matplotlib: сочетание нескольких осей

Сообщение Anonymous »

У меня проблема с многоосным графиком matplotlib. Код близок к тому, что я хочу, но почему-то оси путаются. Галочки отсутствуют на ax4, то есть на зеленой оси Y, но отображаются только на ax2 (красной), а метки дублируются и появляются на обеих осях: ax2 и ax4< /код>.
import numpy as np
import matplotlib.pyplot as plt

# Generate fake data
distance = np.logspace(2, 4, num=50)
a_detector = 10**4 / distance**1.5
b_detector = 10**5 / distance**1.6
c_detector = 10**3 / distance**1.4
d_detector = 10**2 / distance**1.2

# Create figure and axes
fig, ax1 = plt.subplots(figsize=(20, 10))

ax1.plot(distance, a_detector, 'bo-', label='A')
ax1.set_xlabel('Shower Plane Distance [meter]')
ax1.set_ylabel('signal type I', color='blue')
ax1.set_xscale('log')
ax1.set_yscale('log')
ax1.tick_params(axis='y', labelcolor='blue')

ax2 = ax1.twinx()
ax2.plot(distance, b_detector, 'ro-', label='B')
ax2.set_ylabel('signal type II', color='red')
ax2.set_yscale('log')
ax2.tick_params(axis='y', labelcolor='red')

ax3 = ax1.twinx()
ax3.spines['right'].set_position(('outward', 90))
ax3.plot(distance, c_detector, 'ks-', label='C')
ax3.set_ylabel('signal type III', color='black')
ax3.set_yscale('log')
ax3.tick_params(axis='y', labelcolor='black')

ax4 = ax1.twinx()
ax4.spines['left'].set_position(('outward', 90))
ax4.plot(distance, d_detector, 'g^-', label='D')
ax4.set_ylabel('signal type IV', color='green')
ax4.set_yscale('log')
ax4.tick_params(axis='y', labelcolor='green')
ax4.yaxis.set_label_position('left')
ax4.yaxis.set_tick_params(labelleft=True)

fig.legend(loc='upper right', bbox_to_anchor=(0.89, 0.86))
plt.show()


Подробнее здесь: https://stackoverflow.com/questions/793 ... xes-mixups
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»