我正在创建一系列箱线图,以便将不同类型的癌症相互比较(基于5个类别)。对于绘图,我使用seaborn / matplotlib。它适用于大多数癌症类型(请参见右图),但是在某些x轴上会稍微塌陷(请参见左图)或严重塌陷(请参见中图) https://i.imgur.com/dxLR4B4.png
研究代码中seaborn如何绘制盒子/小提琴图https://github.com/mwaskom/seaborn/blob/36964d7ffba3683de2117d25f224f8ebef015298/seaborn/categorical.py(第961行)
violin_data = remove_na(group_data[hue_mask])
我意识到,当nan太多时就会发生这种情况
是否有可能仅通过代码阻止这种崩溃 我不想修改数据框(将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的类别) 我希望每个图都具有相同的宽度。
更新 尝试按建议使用order参数将导致以下输出: 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)