我有一个直方图,我在matplotlib中绘制了大约260,000个左右的值。
问题是直方图上的频率轴(y轴)达到了高数,例如100,000 ......我真正喜欢的是将y标签设置为数千,所以代替,例如:
100000
75000
50000
25000
0
要有这个:
100
75
50
25
0
然后我可以简单地将y轴更改为“频率(000s)” - 这样可以更容易地阅读。有任何想法的人如何实现?
答案 0 :(得分:13)
使用matplotlib.ticker.FuncFormatter:
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(1000000)
fig, ax = plt.subplots()
n, bins, patches = ax.hist(x, 50, facecolor='green', alpha=0.75)
ax.yaxis.set_major_formatter(ticker.FuncFormatter(
lambda y, pos: '%.0f' % (y * 1e-3)))
ax.set_ylabel('Frequency (000s)')
plt.show()
答案 1 :(得分:0)
只需在输入值之前自行转换值。在numpy中,您只需array/1000
而不是array
。