我用matplotlib创建了一个箱线图。由于一个异常值,x轴的范围非常宽,并且与轴相关的框很小。是否有可能中断x轴f。即带有双斜杠“//”或其他任何东西?所以我可以看到异常值,但得到一个更大的盒子。
数据框示例
data = { 'T1': ['ja', 'ja', 'ja', 'ja', 'ja', 'nein', 'nein', 'nein', 'nein', 'nein', 'ja', 'ja', 'ja', 'ja', 'ja', 'nein', 'nein', 'nein', 'nein', 'nein', 'ja', 'ja', 'ja', 'ja', 'ja', 'nein', 'nein', 'nein', 'nein'], 'days': [2000,200,200,400,400,100,500,50,400,600,30,200,200,400,400,100,100,50,400,600,30,200,200,400,400,100,100,50,400]}
df = pd.DataFrame(data)
plot box with seaborn
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
f, ax = plt.subplots(figsize=(15,5))
sns.boxplot(data=df,
x = df.loc[:,'days'],
y= df.loc[:,'T1'],
hue='T1',
ax=ax)
ax.set_xlabel('days')
ax.legend().remove()
plt.show()
现在离群值为2000天,出于我的目的,有必要显示这个极值。但我想压缩x轴。所以我的想法是,用f。即//以在700和1750之间破坏x轴。有人有主意吗?
在尝试将其传输到我的数据后,出现了以下问题:#重命名第二列为'days_after'并创建第三列
df.loc[:, 'days_before']=0-df.loc[:, 'days_after']
如果我现在尝试用分裂的x轴绘制同一个图,它是行不通的。
[![f, (ax1, ax2) = plt.subplots(ncols=2, sharey=True, gridspec_kw={'width_ratios':\[5,1\]}, figsize=(5,2))
sns.boxplot(data=df,
x = df.loc\[:,'days_before'\],
y= df.loc\[:,'T1'\],
hue='T1',
ax=ax1, showfliers = False)
sns.boxplot(data=df,
x = df.loc\[:,'days_before'\],
y= df.loc\[:,'T1'\],
hue='T1',
ax=ax2)
ax1.set_xlabel('days')
ax1.legend().remove()
ax2.legend().remove()
ax1.spines\['right'\].set_visible(False)
ax2.spines\['left'\].set_visible(False)
ax2.yaxis.set_visible(False)
ax1.set_xlim(right=-1750)
ax2.set_xlim(left=-750)
plt.show()][2]][2]
1条答案
按热度按时间km0tfn4u1#
一种可能:
另见official matplotlib example
输出:
左侧为离群值
df['days'] *= -1
)。*你需要改变几件事:
输出: