在 matplotlib 箱形图中记录 x 尺度

Log x-scale in matplotlib box plot

我有一个看似简单的问题。也许只是我误用了这个库,但我不知道什么是正确的语法。

我必须根据一组数据制作箱线图。我希望将 x 轴设置为对数刻度,但只写 plt.xscale('log') 会使 x 轴消失。

这是我的代码:

import matplotlib.pyplot as plt

# .. data analysis here ...

plt.boxplot(values, positions = pos, widths = w)
plt.xscale('log')
plt.yscale('log')
plt.show()

生成的图像是:

没关系,除了没有出现 x 轴这一事实。这个问题有简单的解决方法吗?

谢谢!非常感谢任何建议!

尝试使用 plt.autoscale() 或手动设置 x 轴的范围:

import matplotlib.pyplot as plt
import numpy as np

# fake up some data
spread = np.random.rand(50) * 100
center = np.ones(25) * 50
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
data = np.concatenate((spread, center, flier_high, flier_low), 0)
spread = np.random.rand(50) * 100
center = np.ones(25) * 40
flier_high = np.random.rand(10) * 100 + 100
flier_low = np.random.rand(10) * -100
d2 = np.concatenate((spread, center, flier_high, flier_low), 0)
data.shape = (-1, 1)
d2.shape = (-1, 1)
data = [data, d2, d2[::2, 0]]

plt.figure()
plt.boxplot(data)
plt.xscale('log')
plt.yscale('log')
plt.autoscale(True)
plt.show()