如何绘制分组条形图?

How can I draw a grouped bar plot?

我已经计算了该算法的精度、召回率和 f 度量。我想为这三个值绘制条形图。 Precision = 1*256,recall = 1*256,F-measure = 1*256。

我得到这样的数字:

但是,我想像这样绘制条形图:

我是 Matlab 编程的新手,我试过下面的代码

data = [P_1,R_1,f_1
    P_2,R_2,f_2
    P_3,R_3,f_3
    P_4,R_4,f_4];
b=bar(data);
set(b,{'FaceColor'},{'b';'r';'y'});
grid on;
set(gca,'XTickLabel',{'DEMO1','DEMO2','DEMO3','DEMO4'});
legend('Precision','Recall','F_\beta');

请帮我解决这个问题。

我附上由 P1、R1 和 F1 组成的 text file

提前致谢。

编辑1: 我们总共有 12 个包含 256 个值的向量,但我们必须计算平均值或中值或任何值。最后,你只需要计算从 P1 到 P_1.Thank 的一个值,你这么多 @EBH

你快完成了,但是你有 2 个错误。

  1. 你从 Precision(P1,P2...)的整个向量和其他测量值构建 data,而 bar 你只输入要绘制的值。 bar 绘图的所有值都是标量 like here,因此 you 必须在使用 bar 绘图之前进行所有统计。在你的情况下,我相信你想取每个变量的平均值,所以 P_1 = mean(P1)R_1 = mean(R1) 等。对于你的所有变量。最终,您将从 12 个向量中获得 12 个标量。
  2. 然后,您需要在矩阵中正确排列这些值。每行代表一个组,每列代表一种颜色。基本上,您做了一些接近的事情,但弄乱了逗号和换行符。

您需要做的就是正确构建 data(当其中的所有变量都是标量时):

data = [P_1 R_1 f_1
    P_2 R_2 f_2
    P_3 R_3 f_3
    P_4 R_4 f_4];

请注意,我删除了所有逗号,因为在 Matlab 中,您可以使用 ,; 指定矩阵的形状,或者使用空格和换行符。 If you mix both you get in trouble...

所以 data 是 4×3,每行是一个演示,每列是一个度量。使用一些随机数据,它看起来像这样:

data = rand(4,3);
b = bar(data);
set(b,{'FaceColor'},{'b';'r';'y'});
grid on;
set(gca,'XTickLabel',{'DEMO1','DEMO2','DEMO3','DEMO4'});
legend('Precision','Recall','F_\beta');