您可以根据图表上的位置设置盒子的特定宽度。 boxplot
的 width
参数允许您设置不同的宽度。要计算相应的宽度,您需要将位置转换为线性比例尺,加上或减去一些线性宽度,并将其转换回对数比例尺。因此获得的两个值之间的差是要设置的条形的宽度。
这里使用的线性宽度w
当然在某种程度上是任意的;您需要为自己选择一个合适的值。
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(42)
a = np.cumsum(np.random.rayleigh(150, size=(50,8)), axis=1)
fig, ax=plt.subplots()
positions=np.logspace(-0.1,2.6,8)
w = 0.1
width = lambda p, w: 10**(np.log10(p)+w/2.)-10**(np.log10(p)-w/2.)
ax.boxplot(a, positions=positions, widths=width(positions,w))
ax.set_xscale("log")
plt.show()