gpt4 book ai didi

matlab - 在Matlab中绘制一个颜色代表一个值的矩形

转载 作者:行者123 更新时间:2023-12-05 01:48:13 24 4
gpt4 key购买 nike

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

谢谢

最佳答案

您可以设置矩形颜色,尽管与您使用 scatter 的方式不完全相似。使用 rectangle 时,您有两种颜色选择;边缘颜色和面颜色。要设置边缘颜色,请使用表示 RGB 值的 3 元素向量,这样每个元素都在 [0, 1] 范围内。例如

%make some arbitrary rectangle (in this case, located at (0,0) with [width, height] of [10, 20])
rect_H = rectangle('Position', [0, 0, 10, 20]);
%sets the edge to be green
set(rect_H, 'EdgeColor', [0, 1, 0])

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

例如这 2 个命令将具有相同的效果:

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));

其中 value 被假定为标量。此外,如果您希望在一行中完成类似于 scatter 的所有操作,您也可以这样做:

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中绘制一个颜色代表一个值的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16114573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com