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

时间:2017-06-13 12:32:21

标签: python matplotlib seaborn boxplot

我正在用seaborn绘制一系列带有

的箱形图
sns.boxplot(full_array)

其中full_array包含200个数组。 因此,我在x轴上有200个箱图和刻度,从0到200。

xticks彼此太靠近了,我只想展示其中的一些,例如,每隔20左右标记一次xtick。

我尝试了几种解决方案here,但它们没有用。

每次我对xticks进行采样时,我都会得到错误的刻度标签,因为它们从0到N编号,单位间距。

例如,使用行ax.xaxis.set_major_locator(ticker.MultipleLocator(20)) 我每隔20个标记xtick,但标签是1,2,3,4而不是20,40,60,80 ......

感谢所有能帮助的人。

1 个答案:

答案 0 :(得分:10)

seaborn boxplot使用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是不够的,因为滴答声&#39;值仍将由固定格式化程序设置。

相反,你需要设置一个ScalarFormatter,它将ticklabels设置为与其位置上的数字相对应。

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()

enter image description here