我在和希伯恩密谋一系列的箱线图
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时的滴答频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44521648/