柱状图比较不同字段的数据
我想比较两个不同模型的不同字段,而每个字段的可接受值是不一样的。比如,一个字段的值可以达到一百万,而另一个字段的最大值只能是100。我想把所有字段放在同一个柱状图里进行比较。
field1 | field2 | field3
Mod1 | 468 | 28,000 | 800,000,000
Mod2 | 162 | 2,000 | 228,000,000
我在考虑把Mod2的值与Mod1的值进行百分比比较(把Mod1的值当作100%),然后画出柱状图。这样,我们就可以比较Mod2的值相对于Mod1的值有多小,而且所有不同的字段都能在同一个图表中显示(最大y值是100)。在柱子上方标注实际的值。
还有其他经典的方法可以做到这一点吗?另外,我该如何用Python的matplotlib实现我上面提到的想法呢?
1 个回答
2
根据Nicolas P. Rougier的matplotlib教程中给出的例子,快速的解决办法是:
import numpy as np
import matplotlib.pylab as plt
mod1 = np.array([ 468, 28000, 800000000 ])
mod2 = np.array([ 162, 2000, 228000000 ])
proc = mod2.astype(float) / mod1.astype(float)
for ii, bar in enumerate(proc):
plt.bar(ii, bar)
plt.text(ii + 0.4, bar + 0.01, "%.2f" % bar, ha='center', va='bottom')
plt.ylim(0, 1.0)
plt.show()
你可以根据自己的需要,轻松调整坐标轴的刻度、颜色等设置。