Matplotlib несколько графиков на одной оси через цикл не обновляет y_lim - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужно создать фигуру, которая содержит несколько гауссовых гистограмм из списка параметров (пары mu и sigma).Что у меня пока так:

import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
import numpy as np

def single_camel_plot(mu, sigma, ax):
    x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)
    sns.lineplot(x, stats.norm.pdf(x, mu, sigma), ax=ax)
    ax.set_ylim(bottom=0)

fig, ax = plt.subplots()
mu_sigma_pairs = [(16900, 2100), (18200, 1500)]
for mu, sigma in mu_sigma_pairs:
    single_camel_plot(mu, sigma, ax)

На выходе получается эта цифра.

figure with wrong y_lim

В идеале, две гистограммы должны использовать одну ось Y вместо вторичной оси, а ylim следует настроить так, чтобы она соответствовала самой высокойкривая.

1 Ответ

0 голосов
/ 13 ноября 2018

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

import matplotlib.pyplot as plt
from scipy import stats
import numpy as np

def single_camel_plot(mu, sigma, ax):
    x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)
    ax.plot(x, stats.norm.pdf(x, mu, sigma))   

fig, ax = plt.subplots()
mu_sigma_pairs = [(16900, 2100), (18200, 1500)]
for mu, sigma in mu_sigma_pairs:
    single_camel_plot(mu, sigma, ax)

ax.set_ylim(bottom=0)   # <-------  HERE

plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...