#python #matplotlib #seaborn
Вопрос:
Я использую Сиборна для построения некоторых данных.
Проблема, с которой я сталкиваюсь, заключается в том, что ось Y автоматически масштабируется и не показывает фактические числа.
survive_count = sns.barplot(x="Pclass", y='Survived', data=df)
Каким может быть возможное решение для устранения этого?
После нескольких предложений я попытался
survive_count = sns.countplot(x="Pclass", hue='Survived', data=df)
survive_count.figure.savefig(my_path '/Class vs Survival Count.png')
Но, к сожалению, я столкнулся с другой проблемой
Я действительно не понимаю, почему у меня такое перевернутое изображение.
Чтобы решить эту проблему, я попытался
plt.gca().invert_yaxis()
и
plt.ylim(reversed(plt.ylim()))
Но оба решения не сработали.
Комментарии:
1. Не
machine-learning
вопрос, пожалуйста, не спамьте нерелевантные теги (удалены).2. На данный момент трудно сказать. Поскольку я все еще сталкиваюсь с ненормальным поведением библиотеки Сиборна. Я обновлю то, что я сделал, и результат, который я получаю
3. Этот вопрос все еще открыт? Или на него ответили сейчас?
Ответ №1:
Возможно, вам захочется использовать график подсчета. По умолчанию столбчатая диаграмма усредняет значения.
import seaborn as sns
import matplotlib.pyplot as plt
df = sns.load_dataset('titanic')
ax = sns.countplot(x="pclass", data=df[df['survived'] == 1])
plt.show()
Или с помощью hue
:
sns.set_theme("paper")
df = sns.load_dataset('titanic')
ax = sns.countplot(x="pclass", hue="survived", data=df)
Комментарии:
1. Большое спасибо за вашу помощь. Ваше предложение частично помогло мне. К сожалению, сейчас я столкнулся с еще одной забавной проблемой. Используя sns.countplot, я получаю перевернутую ось y без масштаба. Я использовал plt.ylim(обратный(plt.ylim())) для инвертирования оси, но по-прежнему не помогал с маркерами.
2. Обе проблемы очень необычны, они, безусловно, не являются поведением по умолчанию. Трудно понять, что вы делаете не так, не видя кода. Можете ли вы отредактировать сообщение с вопросом и добавить код для воспроизводимого примера?
Ответ №2:
причина, по которой я предполагаю, заключается в том, что столбчатая диаграмма seaborns отражает среднее значение категории. Пожалуйста, посмотрите, поможет ли вам какой-либо из приведенных ниже кодов.
survive_count = sns.barplot(x="Pclass", y='Survived', data=df, estimator=sum)
survive_count = sns.barplot(x="Pclass", y='Survived', data=df, estimator=len)
from numpy import count_nonzero
survive_count = sns.barplot(x="Pclass", y='Survived', data=df, estimator= count_nonzero)
Комментарии:
1. Большое спасибо, @aj7amigo, оба варианта оценки с sum и len работают. Хотя смысл у обоих разный. Мы можем использовать любой из них в зависимости от наших требований. count_nonzero не работает и выдает синтаксическую ошибку.
2. @RajRajeshwariPrasad — для 3-го варианта вам необходимо импортировать следующее.
from numpy import count_nonzero
Тогда, я надеюсь, это должно сработать. Вы правы, какой вариант выбрать, полностью зависит от варианта использования.