柱状图比较不同字段的数据

1 投票
1 回答
883 浏览
提问于 2025-04-17 16:32

我想比较两个不同模型的不同字段,而每个字段的可接受值是不一样的。比如,一个字段的值可以达到一百万,而另一个字段的最大值只能是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()

你可以根据自己的需要,轻松调整坐标轴的刻度、颜色等设置。

撰写回答