Python Matplotlib箱线图宽度(对数比例)

Python Matplotlib箱线图宽度(对数比例),python,matplotlib,Python,Matplotlib,我试图用对数x轴绘制一个箱线图。正如您在下面的示例中所看到的,每个框的宽度都因比例而减小。有没有办法使所有箱子的宽度相同 您可以根据绘图上的位置设置框的特定宽度。box-plot的width参数允许设置不同的宽度。要计算相应的宽度,需要将位置转换为线性比例,添加或减去一些线性宽度,然后转换回对数比例。由此获得的两个值之间的差值是要设置的条的宽度 这里使用的线性宽度当然是任意的;你需要为自己选择一个好的价值 import matplotlib.pyplot as plt import numpy

我试图用对数x轴绘制一个箱线图。正如您在下面的示例中所看到的,每个框的宽度都因比例而减小。有没有办法使所有箱子的宽度相同


您可以根据绘图上的位置设置框的特定宽度。
box-plot
width
参数允许设置不同的宽度。要计算相应的宽度,需要将位置转换为线性比例,添加或减去一些线性宽度,然后转换回对数比例。由此获得的两个值之间的差值是要设置的条的宽度

这里使用的线性宽度当然是任意的;你需要为自己选择一个好的价值

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

我认为您应该添加您的代码,不仅仅是您的代码,还应该添加一个。这正是我想要的。谢谢。