Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中用颜色表示值绘制矩形_Matlab - Fatal编程技术网

在Matlab中用颜色表示值绘制矩形

在Matlab中用颜色表示值绘制矩形,matlab,Matlab,我想画一些矩形,它们都有一个关联的值。我可以使用scatter(x,y,[],value)绘制具有值的点但是矩形函数似乎没有这样的功能 谢谢您可以设置矩形的颜色,尽管这与使用散点的方式不完全相同。使用矩形时,有两种颜色选项;边颜色和面颜色。要设置边缘颜色,请使用表示RGB值的三元素向量,使每个元素都在范围[0,1]内。 e、 g 矩形的面颜色是其填充颜色——您可以通过使用颜色字符串(例如,“g”是绿色,“r”是红色等)或使用与“边颜色”属性相同的3元素向量来设置 e、 g.这两个命令具有相同的效

我想画一些矩形,它们都有一个关联的值。我可以使用
scatter(x,y,[],value)绘制具有值的点
但是
矩形
函数似乎没有这样的功能


谢谢

您可以设置矩形的颜色,尽管这与使用
散点
的方式不完全相同。使用
矩形
时,有两种颜色选项;边颜色和面颜色。要设置边缘颜色,请使用表示RGB值的三元素向量,使每个元素都在范围[0,1]内。 e、 g

矩形的面颜色是其填充颜色——您可以通过使用颜色字符串(例如,“g”是绿色,“r”是红色等)或使用与“边颜色”属性相同的3元素向量来设置

e、 g.这两个命令具有相同的效果:

set(rect_H, 'FaceColor', 'r'); 
set(rect_H, 'FaceColor', [1, 0, 0]); 
在您的例子中,您只需要将值(无论它是什么形式)映射到3元素RGB颜色向量。我不确定您的着色目标是什么,但如果您希望所有矩形颜色都不同,您可以使用以下映射函数:

color_map = @(value) ([mod((rand*value), 1), mod((rand*value), 1), mod((rand*value), 1)])
那就有

set(rect_H, 'FaceColor', color_map(value));
其中,
假定为标量。此外,如果您希望在一行上完成类似于
分散的所有操作,您也可以这样做:

rectangle('Position', [x, y, w, h], 'FaceColor', color_map(value));
更新: 要使此功能与
colorbar
配合使用,您必须保存每个3元素颜色向量,并将其传递给matlab内置函数
colormap
。然后调用
colorbar
。我不知道您使用的是哪种颜色映射,因此为了便于说明:

figure;
hold on;

%have 20 rectangles
num_rects = 20;

%place your rectangles in random locations, within a [10 x 10] area, with
%each rectange being of size [1 x 1]
random_rectangles = [rand(num_rects, 2)*10, ones(num_rects,2)];

%assign a random color mapping to each of the 20 rectangles
rect_colors = rand(num_rects,3);

%plot each rectangle
for i=1:num_rects
    rectangle('Position', random_rectangles(i,:), 'FaceColor', rect_colors(i,:));
end

%set the colormap for your rectangle colors
colormap(rect_colors);
%adds the colorbar to your plot
colorbar

希望这就是你所问的……

非常感谢。我想使用matlab用于散射的图例-一块带有标记值的颜色渐变。你知道使用什么颜色映射吗?我的目标是使用颜色来显示与之相关的值。编辑:Matlab将其称为
colorbar
@superbriggs。您必须保存所有颜色向量(这样您就有一个[n x 3]矩阵),然后将其传递给colormap,然后调用colorbar(并保持绘图)。我将尝试更新我的答案,以给出一个示例,最后我使用了
colormap
,它返回一个包含62个rgb值的矩阵
colorbar
使用。我从中计算颜色,然后使用
caxis([min-max])设置
colorbar
的限制。非常感谢您的帮助。@superbriggs如果您的问题得到解决,您能接受答案吗?(或者发布您提出的解决方案并接受?)
figure;
hold on;

%have 20 rectangles
num_rects = 20;

%place your rectangles in random locations, within a [10 x 10] area, with
%each rectange being of size [1 x 1]
random_rectangles = [rand(num_rects, 2)*10, ones(num_rects,2)];

%assign a random color mapping to each of the 20 rectangles
rect_colors = rand(num_rects,3);

%plot each rectangle
for i=1:num_rects
    rectangle('Position', random_rectangles(i,:), 'FaceColor', rect_colors(i,:));
end

%set the colormap for your rectangle colors
colormap(rect_colors);
%adds the colorbar to your plot
colorbar