我正在用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 ......
感谢所有能帮助的人。
答案 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()