【发布时间】:2010-02-11 08:14:19
【问题描述】:
我有一个 2 列矩阵(称为 M,我使用 Matlab 的 plot 命令(plot(M))将其可视化为两个向量。我有两个问题:
- 我想在图上标记向量本身。
- 我想在图上标记矩阵的每一行(即每个向量分量)。
我将如何去做这些事情?
【问题讨论】:
我有一个 2 列矩阵(称为 M,我使用 Matlab 的 plot 命令(plot(M))将其可视化为两个向量。我有两个问题:
我将如何去做这些事情?
【问题讨论】:
一个例子:
M = cumsum(rand(10,2) - 0.5);
x = 1:size(M,1);
plot(x, M(:,1), 'b.-', x, M(:,2), 'g.-')
legend('M1', 'M2')
for i=x
text(i+0.1, M(i,1), sprintf('%.2f', M(i,1)), 'FontSize',7, 'Color','b');
text(i+0.1, M(i,2), sprintf('%.2f', M(i,2)), 'FontSize',7, 'Color','g');
end
或者,您可以使用:
datacursormode()
这将使用户只需point and click on points 即可查看数据标签。
【讨论】:
您可能需要对此进行调整,以使标签的位置完全符合您的要求,但类似这样的方法可以解决问题。
M = [1 2; 3 4; 5 6]
plot(M)
nrows = size(M, 1);
ncols = size(M, 2);
x = repmat(nrows - .3, 1, ncols);
y = M(end, :) - .3;
labels = cellstr([repmat('Col', ncols, 1), num2str((1:ncols)')]);
text(x, y, labels)
【讨论】:
您可以使用函数标记每个轴:
xlabel('label')
ylabel('label')
这些也可以采用单元格参数,其中每一行都是一个新行。这对于显示单位很方便。标记图上的每个点可以这样:
for i=1:length(M)
text(M(i,1),M(i,2),'Label Text')
end
标签文本也可以是字符串变量,您可以使用 sprintf 编辑它并为每个点制作特殊字符串。
【讨论】: