我在和希伯恩密谋一系列的箱线图

sns.boxplot(full_array)

其中full_array包含200个数组。
因此,我在x轴上有200个箱线图和记号,从0到200。
Xtick彼此太近了,我只想显示其中的一些,例如,每20个左右有一个标签的Xtick。
我尝试了一些解决方案,正如上面提到的那样,但它们没有起作用。
每次我对xticks进行采样时,我都会得到错误的记号标签,因为它们的编号是从0到N,单位间距。
例如,使用行ax.xaxis.set_major_locator(ticker.MultipleLocator(20))时,每20个标记一个xtick,但标签是1、2、3、4,而不是20、40、60、80…
多亏了这么好的人。

最佳答案

Seaborn箱线图使用FixedLocator和FixedFormatter,即

print ax.xaxis.get_major_locator()
print ax.xaxis.get_major_formatter()

印刷品
<matplotlib.ticker.FixedLocator object at 0x000000001FE0D668>
<matplotlib.ticker.FixedFormatter object at 0x000000001FD67B00>

因此,将定位器设置为MultipleLocator是不够的,因为记号的值仍将由固定格式设置器设置。
相反,您需要设置一个“ScalarFormatter”,它将滴答标签设置为与它们所在位置的数字相对应。
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import seaborn.apionly as sns
import numpy as np

ax = sns.boxplot(data = np.random.rand(20,30))

ax.xaxis.set_major_locator(ticker.MultipleLocator(5))
ax.xaxis.set_major_formatter(ticker.ScalarFormatter())

plt.show()

python - 使用seaborn/matplotlib boxplot时的滴答频率-LMLPHP

关于python - 使用seaborn/matplotlib boxplot时的滴答频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44521648/

10-12 22:44