Сделайте так, чтобы plt.yticks (np.arange (0, 1, step = 0.1)) действительно покрывал диапазон от 0 до 1 - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь сделать несколько сюжетов с Matplotlib и Seaborn.Я бы хотел, чтобы тики у менялись от 0 до 1. Как вы можете видеть на скриншоте, графики масштабируются, что затрудняет их визуальное сравнение.Как заставить тики y каждого графика работать от 0 до 1?

category_types = list(preds_df['category'].value_counts().keys())

fig = plt.figure(figsize=(12, 18))
fig.subplots_adjust(hspace=0.3,wspace=0.3,left=0,right=1,bottom=0, top=1)
Npicture = 6

count = 1
for irow in range(Npicture):
    ax = fig.add_subplot(3, 2, count,xticks=[],yticks=[])
    ax.set_title(category_types[count-1])
    plt.yticks(np.arange(0, 1, step=0.1))
    sns.boxplot(ax=ax, x="variable", y="value", data=pd.melt(preds_df[preds_df['category'] == category_types[count-1]][labels]))
    count += 1
plt.show()

enter image description here

1 Ответ

0 голосов
/ 14 мая 2019

Я отвечу на свой вопрос, на случай, если у кого-то возникнет такая же проблема.Оказывается, если вы поменяете местами строки

plt.yticks(np.arange(0, 1, step=0.1))
sns.boxplot(ax=ax, x="variable", y="value", data=pd.melt(preds_df[preds_df['category'] == category_types[count-1]][labels]))

, чтобы код стал

sns.boxplot(ax=ax, x="variable", y="value", data=pd.melt(preds_df[preds_df['category'] == category_types[count-1]][labels]))
plt.yticks(np.arange(0, 1.1, step=0.1))

, это решит проблему enter image description here

Примечаниечто я также изменил второй аргумент в plt.yticks () с 1 на 1.1.Если оставить значение 1, то ось остановится на 0,9.

Обновление Как указывает @ user2357112.np.linspace () - лучший метод для использования, чем np.arange ().Таким образом, строка должна выглядеть следующим образом:

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