Метка matplotlib.pyplot.axvline не отображается при использовании функции axvline - PullRequest
0 голосов
/ 19 октября 2018

Я пишу функцию для построения гистограммы, используя matplotlib Я пытаюсь добавить вертикальную линию в mean, mean+2*sd, and mean-2*sd.Линии появляются на графике, но метка, которую я им даю, отсутствует, есть идеи, как это исправить?

Также я пытаюсь поместить этот текст Mean = "for example x" Но я использую жестко закодированную координацию plt.text(400, 0.015, "Mean = {}".format(round(mean, 3))) Как я могу использовать программный способ вывести значения для координаты?то же самое в тонкой линии:

plt.axis([min(data), max(data), 0, 0.02]) Могу ли я получить минимальное и максимальное значения Y более эффективным способом вместо жесткого их кодирования?

def hist(location, data, mean, std, n_bins=20, x_label="", y_label="",
                  title=""):
    samples = sorted(data)
    x = np.linspace(min(samples), max(samples), 12)
    y_pdf = stats.norm.pdf(x, mean, std)
    y_skew_pdf = stats.skewnorm.pdf(x, *stats.skewnorm.fit(samples))
    l1, = plt.plot(x, y_pdf, label='PDF')
    l2, = plt.plot(x, y_skew_pdf, label='SKEW PDF')
    # Compute histogram of Samples
    n, bins, patches = plt.hist(samples, n_bins, density=True, facecolor='g', edgecolor='red', alpha=0.75)
    plt.axvline(label='Mean', x=mean, linestyle=':', color='red')
    plt.axvline(label='Mean-2*SD', x=round(mean-2*std, 3), linestyle='dashed')
    plt.axvline(label='Mean+2SD', x=round(mean+2*std, 3), linestyle='dashed')
    plt.xlabel(x_label)
    plt.ylabel(y_label)
    plt.title(title)
    # The first plt.text arguments are coordinates x,y of the plot
    plt.text(400, 0.015, "Mean = {}".format(round(mean, 3)))
    plt.legend((l1, l2), (l1.get_label(), l2.get_label()), loc='upper right')
    plt.axis([min(data), max(data), 0, 0.02])
    plt.savefig(location)

1 Ответ

0 голосов
/ 20 марта 2019

Это может помочь сократить вашу plt.legend(... строку до простого:

plt.legend(loc='upper right');

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

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

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