在matplotlib框图中记录x尺度

时间:2016-06-23 11:34:00

标签: python matplotlib plot boxplot

我有一个看似简单的问题。也许这只是我滥用图书馆,但我无法弄清楚它的正确语法。

我必须从一组数据中制作一个箱线图。我希望将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()

结果图像是:

enter image description here

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

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

1 个答案:

答案 0 :(得分:0)

尝试使用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()

enter image description here