我正在尝试绘制带有对数x轴的箱线图。如您在示例中看到的,由于比例,每个框的宽度减小。有什么办法可以使所有盒子的宽度相同吗?
您可以根据绘图上的位置设置框的特定宽度。所述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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1789 次 |
最近记录: |