Как использовать разные FuncFormatter для разных графиков, используя динамическую переменнуюPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать разные FuncFormatter для разных графиков, используя динамическую переменную

Сообщение Anonymous »

У меня есть несколько фигур, на которых я хочу показать одну и ту же кривую с правой осью Y и в разных масштабах.
Различные фигуры генерируются внутри цикла, и я бы хотел, чтобы масштабирование напрямую зависело от цикла. переменная.
Вот код работает, но масштабные коэффициенты фиксированы.

Код: Выделить всё

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

data = np.random.normal(0, 0.01, (20))

# The following works, right axis of both figures is scaled by 2 and 10, respectively
for right_scale in [2, 10]:
fig, ax = plt.subplots()
ax.plot(data)
ax2 = ax.twinx()
ax2.set_ylim(ax.get_ylim())
if right_scale == 2:
formatter = FuncFormatter(lambda x, pos: '{:.2f}'.format(x * 2))
else:
formatter = FuncFormatter(lambda x, pos: '{:.3f}'.format(x * 10))
ax2.yaxis.set_major_formatter(formatter)
plt.show()
Вот код, который не работает при наличии динамических коэффициентов масштабирования. Я предполагаю, что форматтер связан с переменной right_scale и не просто принимает ее значение при определении форматтера.

Код: Выделить всё

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

data = np.random.normal(0, 0.01, (20))
# The following does not work, right axis of both figures is scaled by 10
for right_scale in [2, 10]:
fig, ax = plt.subplots()
ax.plot(data)
ax2 = ax.twinx()
ax2.set_ylim(ax.get_ylim())
if right_scale == 2:
formatter = FuncFormatter(lambda x, pos: '{:.2f}'.format(x * right_scale))
else:
formatter = FuncFormatter(lambda x, pos: '{:.3f}'.format(x * right_scale))
ax2.yaxis.set_major_formatter(formatter)
plt.show()
Я не знаю, как реализовать второй случай.

Подробнее здесь: https://stackoverflow.com/questions/792 ... c-variable
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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