我正在使用命令fill
绘制许多多边形。
fill(X1,Y1,1)
fill(X2,Y2,2)
...
我想将边缘颜色设置为与面部颜色相同。我该怎么做?
我正在绘制许多多边形,我需要找到一种方法来将edgecolor设置为与facecolor相同。即使是脸色也不为我所知。我必须使用数字,因为我正在绘制数据。
答案 0 :(得分:1)
只需设置EdgeColor
属性/值对,颜色与faces相同:
t = (1/16:1/8:1)'*2*pi;
x = sin(t);
y = cos(t);
fill(x, y, 'r', 'EdgeColor', 'r');
在for循环中使用不同颜色绘制多个多边形的示例代码(使用当前色彩映射):
function [] = foo()
%[
cmap = colormap; % Use some colormap to have different color for polygons
ccount = size(cmap, 1); % Number of elements in the colormap
figure; % Create a figure
hold on; % Avoids deleting previous polygons
pcount = 50; % number of polygons
for i = 1:pcount,
% Create randomly translated polygon
t = (1/16:1/8:1)'*2*pi;
x = 0.1*sin(t) + rand;
y = 0.1*cos(t) + rand;
% Select a color in the colormap
colorIndex = mod(i, ccount);
if (colorIndex == 0), colorIndex = ccount; end
colorValue = cmap(colorIndex, :);
% Draw the polygon
fill(x, y, colorValue, 'EdgeColor', colorValue);
end
%]
end
答案 1 :(得分:1)
我不明白CitizenInsane的建议有什么问题,但如果您只是想保存一些代码,可以使用一些辅助功能:
FillItLikeIWant = @(x,y,color) fill(x, y, color, 'EdgeColor',color)
FillItLikeIWant(x,y,'r')
或者,您可以定义所有"样式"提前,这就是我通常用线条图来做到这一点,如下所示:
myStyles = {{'r','EdgeColor','r'};
{'b','EdgeColor','b'};
{'g','EdgeColor','g'}}
然后遍历样式:
for ii = 1:3
fill(x,y,myStyles{ii}{:}); hold on
end
修改强>
我不知道您的示例fill(X1,Y1,1)
中的单个数字 1 或 2 应该是什么,但也许您想要创建并使用这样的色彩映射:
N = 500;
Cmap = colormap(jet(N));
现在使用辅助函数,每个多边形都会获得Cmap
的另一种颜色。
for ii = 1:500
h{ii} = FillItLikeIWant(x,y,Cmap(ii,:));
end
您可以仅通过索引跟踪所有颜色。或者保存每个多边形的句柄。 所以之后你可以通过它的句柄获得多边形的颜色:
get(h{500},'FaceColor')
ans =
0.504 0 0
与:
相同Cmap(500,:)
ans =
0.504 0 0