Seaborn 显示 x-tick 标签重叠
Seaborn showing x-tick labels overlapping
我正在尝试绘制如下所示的箱线图。
现在,有很多我不需要的刻度线,确实不显示任何附加信息。
我使用的代码如下:
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数组中有没有简单的变换来解决这个问题?
我希望我的问题足够清楚。
提前致谢。
不太确定你作为 Sim 有什么,如果它是一个浮点数组,那么在绘图之前它们会被转换为分类。由于标签没有用,您可以做的是使用与 y 值一样长的值范围。
因此,它仍然有很多重叠,因为您试图将 400 x 刻度调整到 x 轴上,并且字体大小默认设置为可读。例如:
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)
您可以将字体设置得更小并且它们不会重叠,但我想它很难阅读:
所以就像你在你的案例中所说的那样,它们没有用,你可以这样做:
ax.set(xticks=Sim[0::10])
我正在尝试绘制如下所示的箱线图。
现在,有很多我不需要的刻度线,确实不显示任何附加信息。 我使用的代码如下:
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数组中有没有简单的变换来解决这个问题?
我希望我的问题足够清楚。
提前致谢。
不太确定你作为 Sim 有什么,如果它是一个浮点数组,那么在绘图之前它们会被转换为分类。由于标签没有用,您可以做的是使用与 y 值一样长的值范围。
因此,它仍然有很多重叠,因为您试图将 400 x 刻度调整到 x 轴上,并且字体大小默认设置为可读。例如:
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)
您可以将字体设置得更小并且它们不会重叠,但我想它很难阅读:
所以就像你在你的案例中所说的那样,它们没有用,你可以这样做:
ax.set(xticks=Sim[0::10])