Додавання мітки осі у до вторинної осі y в matplotlib


119

Я можу додати мітку ay до лівої осі y за допомогою plt.ylabel, але як я можу додати її до другої осі y?

table = sql.read_frame(query,connection)

table[0].plot(color=colors[0],ylim=(0,100))
table[1].plot(secondary_y=True,color=colors[1])
plt.ylabel('$')

Відповіді:


233

Найкращий спосіб - axesбезпосередньо взаємодіяти з об’єктом

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y1 = 0.05 * x**2
y2 = -1 *y1

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')

ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data', color='g')
ax2.set_ylabel('Y2 data', color='b')

plt.show()

приклад графіка


Як отримати праву вісь y, як ліву, я маю на увазі, знизу вгору, від 0 до 5, вирівняною.
Сигур

Як обертати синій текст, не перекриваючи кліщами?
Сигур

@Sigur вам доведеться возитися з передачею параметру горизонтального вирівнювання та / або вертикального вирівнювання до ax2.set_ylabel
Пол H

@PaulH, я виявив, що ми можемо отримати межі y від ax1 і встановити його до ax2, тож положення міток вирівняються.
Сигур

@Sigur Я не стежу за тим, як межі осей та кліщі взаємодіють із обертанням мітки, але якщо ти щасливий, богообіг
Пол H

22

Існує пряме рішення, не возитися з матплотлібом: просто панди.

Налаштування оригінального прикладу:

table = sql.read_frame(query,connection)

ax = table[0].plot(color=colors[0],ylim=(0,100))
ax2 = table[1].plot(secondary_y=True,color=colors[1], ax=ax)

ax.set_ylabel('Left axes label')
ax2.set_ylabel('Right axes label')

В основному, коли дана secondary_y=Trueопція (також передано вісімнадцять ax=ax) pandas.plotповертає різні осі, які ми використовуємо для встановлення міток.

Я знаю, що на це відповіли давно, але я думаю, що цей підхід того вартий.


Спасибі - чудовий підхід! Однак варто зазначити, що це працює лише в тому випадку, якщо ви побудуєте спочатку первинну вісь y, а потім вторинну вісь y, точно так, як ви це зробили. Якщо ви переключите замовлення, воно погано поводиться.
користувач667489

7

Зараз у мене немає доступу до Python, але вгорі голови:

fig = plt.figure()

axes1 = fig.add_subplot(111)
# set props for left y-axis here

axes2 = axes1.twinx()   # mirror them
axes2.set_ylabel(...)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.