Matlab绘图F分数

Matlab绘图F分数,matlab,plot,Matlab,Plot,首先,我为这个相当笼统的问题道歉。我有一个数据矩阵,其中每一行代表不同的视频,每一列代表不同对象跟踪器实现的f-度量。我需要得到一个如下图: 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

首先,我为这个相当笼统的问题道歉。我有一个数据矩阵,其中每一行代表不同的视频,每一列代表不同对象跟踪器实现的f-度量。我需要得到一个如下图:

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

有人告诉我,这个图可以用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

谢谢你的意见

您可以使用函数来实现这一点。你可以这样称呼它:

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

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

(来源:)

使用
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
语句做了什么。如果您希望标签位于中间,而不是在网格定义的地方,则设置刻度属性开始于每一个正方形之间的中途标记,然后线性化1。类似地,我将每个刻度的x和y标签定制为Tracker 1-6和Video 1-8。您可以将这些字符串更改为符合您的目的的任意字符串。另外,请注意,当使用
pcolor
打印时,我必须翻转坐标系作为数据的原点,假设坐标系位于左下角,而数据的原点位于左上角。如果您想避免这种翻转,您也可以轻松地使用@MacDuff的解决方案

我最终得到的结果是:

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


希望这有帮助

您可以使用函数来实现这一点。你可以这样称呼它:

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

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

(来源:)

使用
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
语句做了什么。如果您希望标签位于中间,而不是在网格定义的地方,则设置刻度属性开始于每一个正方形之间的中途标记,然后线性化1。类似地,我将每个刻度的x和y标签定制为Tracker 1-6和Video 1-8。您可以将这些字符串更改为符合您的目的的任意字符串。另外,请注意,当使用
pcolor
打印时,我必须翻转坐标系作为数据的原点,假设坐标系位于左下角,而数据的原点位于左上角。如果您想避免这种翻转,您也可以轻松地使用@MacDuff的解决方案

我最终得到的结果是:

如您所见,较暗的值表示较低的
F
-分数,而较亮的值对应较高的
F
-分数。还要注意,视频标签是倒置的。视频1从顶部开始,而视频8位于顶部