我已经计算了算法的精度,召回率和f度量。我想绘制三个值的条形图。精度= 1 * 256,召回= 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');
请帮我解决这个问题。
我附加了text file,其中包含P1,R1和F1。
提前致谢。
EDIT1: 我们总共有12个256个值的向量,但我们必须计算平均值或中值或任何值。最后,你必须只计算从P1到P_1的一个值。非常感谢你@EBH
答案 0 :(得分:0)
你几乎就在那里,但你有两个错误。
data
,而使用bar
时,您只需输入值为bar
绘制。 bar
绘制的所有值都是标量like here,因此你必须先执行所有统计,然后才能使用P_1 = mean(P1)
进行绘图。在您的情况下,我认为您希望获取每个变量的平均值,因此对于所有变量,R_1 = mean(R1)
和data
等等。最终,你将从你的12个向量中获得12个标量。 您需要做的就是正确构建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中,您可以使用;
和data
指定矩阵的形状,也可以使用空格和换行符。 If you mix both you get in trouble ...
所以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');
是4乘3,每行都是一个演示,每列都是一个度量。对于一些随机数据,它看起来像这样:
path