Seaborn显示x刻度标签重叠

时间:2020-05-28 21:02:31

标签: python seaborn boxplot

我正在尝试绘制一个像这样的箱形图。 enter image description here

现在,有许多刻度线是我不需要的,实际上并没有显示任何其他信息。 我正在使用的代码如下:

plot=sns.boxplot(y=MSE, x=Sim, 
                   width=0.5,
                   palette='colorblind')
plot=sns.stripplot(y=MSE, x=Sim, 
                  jitter=True, 
                  marker='o', 
                  alpha=0.15,
                  color='black')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.gca().invert_xaxis()

MSE和SIM是两个分别包含400个元素的numpy数组。

我回顾了一些使用locator_params和set_xticklabels的解决方案。但是,我想知道:

  • 为什么会这样,
  • MSE和SIM阵列中是否有一个简单的转换可解决此问题?

我希望我的问题很清楚。

谢谢。

1 个答案:

答案 0 :(得分:1)

不太确定Sim的功能,如果它是浮点数组,则在绘制之前将它们转换为分类。由于标签无用,您可以做的是使用与y值一样长的值范围。

那样,它仍然有很多重叠,因为您试图在x轴上放置400个刻度,并且默认情况下将字体大小设置为可读性。例如:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
fig,ax = plt.subplots(figsize=(15,6))

MSE = [np.random.normal(0,1,10) for i in range(100)]
Sim = np.arange(len(MSE))
g = sns.boxplot(y=MSE, x=Sim, width=0.5,palette='colorblind',ax=ax)

enter image description here

您可以将字体设置为较小,并且它们不会重叠,但是我想它几乎不可读:

enter image description here

因此,就像您在案例中所说的那样,它们没有用,您可以这样做:

ax.set(xticks=Sim[0::10])