Я создаю серию диаграмм, чтобы сравнить разные типы рака друг с другом (на основе 5 категорий). Для построения я использую seaborn/matplotlib. Он отлично работает для большинства типов рака (см. изображение справа), однако в некоторых случаях ось x слегка схлопывается (см. изображение слева) или сильно (см. изображение посередине) https://i.imgur.com/dxLR4B4
Глядя на код, как Seaborn строит график коробки/скрипки github.com/mwaskom/seaborn/blob/36964d7ffba3683de2117d25f224f8ebef015298/seaborn/categorical.py (строка 961)
violin_data = remove_na(group_data[hue_mask])
Я понял, что это происходит, когда слишком много нанов
Есть ли какая-либо возможность предотвратить это разрушение только кодом? Я не хочу изменять свой фрейм данных (замените nans на ноль)
Ниже вы найдете мой код:
boxp_df=pd.read_csv(pf_in,sep="\t",skip_blank_lines=False)
fig, ax = plt.subplots(figsize=(10, 10))
sns.violinplot(data=boxp_df, ax=ax)
plt.xticks(rotation=-45)
plt.ylabel("label")
plt.tight_layout()
plt.savefig(pf_out)
Вывод представляет собой график разного размера для каждого типа рака (в зависимости от того, есть ли какая-либо категория полностью nan). Я ожидаю, что каждый график будет одинаковой ширины.
Обновление, пытающееся использовать предложенный параметр порядка, приводит к следующему результату: https://i.imgur.com/uSm13Qw.png
Может быть, этот игрушечный пример поможет?
|Cat1|Cat2|Cat3|Cat4|Cat5
|3.93| |0.52| |6.01
|3.34| |0.89| |2.89
|3.39| |1.96| |4.63
|1.59| |3.66| |3.75
|2.73| |0.39| |2.87
|0.08| |1.25| |-0.27
Обновление Судя по всему, проблема не в данных, а в длине заголовка https://github.com/matplotlib/matplotlib/issues/4413
Поэтому я бы закрыл вопрос @Diziet, должен ли я удалить его или моя проблема может помочь другим? Извините, что не включил строку ниже в пример кода:
ax.set_title("VERY LONG TITLE", fontsize=20)