Matlab绘制F-score

时间:2014-07-07 14:02:45

标签: matlab plot

首先,我为这个相当普遍的问题道歉。我有一个数据矩阵,其中每行代表不同的视频,每列代表不同的对象跟踪器实现的f度量。我需要获得一个看起来像这样的情节:

enter image description here

我被告知这个情节可以使用matlab获得,但我已经检查了整个情节目录而没有结果..是否有一些神奇的方法来获得这个我不知道的?

不知道是否有帮助,我的数据矩阵如下所示:

0.5204    0.5187    0.4838    0.6406    0.4326    0.2271
0.2793    0.1177    0.1767    0.2397    0.2251    0.2138
0.2314    0.0206    0.5091    0.0698    0.4575    0.1406
0.0472    0.1602    0.6372    0.5745    0.3769    0.0294
0.1211    0.0333    0.4342    0.0801    0.0147    0.0389
0.2552    0.5786    0.2446    0.5532    0.3607    0.0984
0.0867    0.1457    0.0237    0.0294    0.1834    0.1492
0.1565    0.0973    0.1303    0.0879    0.1118    0.0756

感谢您的任何意见!

2 个答案:

答案 0 :(得分:2)

您可以使用pcolor功能实现此目的。你可以这样称呼它:

pcolor(C);

pcolor创建一个伪彩色棋盘图。您为其提供了一个矩阵C,它会根据C中使用colormap提供的元素为每个元素着色。默认colormapjet。您可以使用的各种颜色图如下所示:

colormap http://www.mathworks.com/help/matlab/ref/colormap-dropdown.gif

使用jet,较蓝的值往往倾向于较低的值,而红色的值倾向于较高的值。鉴于帖子中的上述情节,copper似乎是最合适的。如果您想更改颜色贴图,只需调用pcolor即可首先生成绘图,然后调用colormap(str),其中str是您要使用的颜色贴图的名称。请注意,我没有包含带引号的单引号,因为它不是一个字符串。此外,pcolor的默认行为是不使用最后一行和最后一列。但是,绘制棋盘时会使用 数据。如果您想使用所有矩阵中的值,我们应该使用所有数据的最小值填充最后一行和最后一列。由于F - 得分为0,我们可以用零填充最后一行和最后一列。

举个例子,让我们使用pcolor创建情节。我们还可以指定自定义x和y轴标签,以模仿您在帖子图中看到的内容。假设您的数据存储在A中,我们可以执行以下操作:

%// Define your data matrix and store it in A first

figure;
Apad = [A zeros(size(A,1),1); zeros(1,size(A,2)) 0];
pcolor(Apad);
colormap(copper);
set(gca, 'XTick', 1.5:6.5);
set(gca, 'YTick', 1.5:8.5);
set(gca,'XTickLabel',{'Tracker 1', 'Tracker 2', 'Tracker 3', 'Tracker 4', 'Tracker 5', 'Tracker 6'});
set(gca,'YTickLabel',{'Video 1', 'Video 2', 'Video 3', 'Video 4', 'Video 5', 'Video 6', 'Video 7', 'Video 8'});
title('Plotting F-scores for each tracker and video');
axis ij; %// Flip co-ordinate system - IMPORTANT!

看看我对这四个set语句做了些什么。如果您希望标签位于中间而不是定义网格的位置,我将tick属性设置为从每个方块之间的中间标记开始,然后线性地进行1.同样,我自定义了x和y标签选择跟踪器1 - 6和视频1 - 8.您可以将这些字符串更改为您希望的任何适合您目的的字符串。另外,请注意,当您使用pcolor进行绘图时,我必须翻转作为数据来源的坐标系统,假设它位于较低位置左侧角,当您的数据来源位于左上角时。如果你想摆脱这种翻转,你也可以轻松使用@MacDuff的解决方案。

我最终获得的输出是:

enter image description here

如您所见,较暗的值表示较低的F - 得分,而较亮的值表示较高的F - 得分。另请注意视频标签是倒置的。视频1从顶部开始,而视频8位于底部。在开始更改y标签以适合您的目的之前,请注意这一点。

希望这有帮助!

答案 1 :(得分:2)

您可以使用imagesc

,例如

imagesc(rand(3,3))

将绘制3x3矩阵。颜色自动分配(最小/最大值=最小/最大颜色)。

enter image description here