Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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_Fill_Edges - Fatal编程技术网

Matlab绘制通过填充区域显示的线

Matlab绘制通过填充区域显示的线,matlab,fill,edges,Matlab,Fill,Edges,我写了一个程序,创建了一个六边形网格,一些是黑色的,一些是白色的。这是随机进行的。然后我随机选择一个六边形子集,在其边缘放置红色钻石。该脚本旨在构建具有颗粒(六边形)和孔隙空间(菱形)的虚拟岩石微观结构,以进行材料建模。我正在使用fill()命令创建每个形状。问题是,当我填充红色钻石时,它下面的六边形边缘仍然显示出来。我试图发布一张图片,但由于这是我第一次发布,它不允许我发布。如果有人想看,我可以发电子邮件 所以要创建黑色六边形: h= fill(hexXY(i,j,1)+vx,hexXY(i,

我写了一个程序,创建了一个六边形网格,一些是黑色的,一些是白色的。这是随机进行的。然后我随机选择一个六边形子集,在其边缘放置红色钻石。该脚本旨在构建具有颗粒(六边形)和孔隙空间(菱形)的虚拟岩石微观结构,以进行材料建模。我正在使用fill()命令创建每个形状。问题是,当我填充红色钻石时,它下面的六边形边缘仍然显示出来。我试图发布一张图片,但由于这是我第一次发布,它不允许我发布。如果有人想看,我可以发电子邮件

所以要创建黑色六边形:

h= fill(hexXY(i,j,1)+vx,hexXY(i,j,2)+vy,'k');

set(h,'edgecolor','k')
其中,hexXY矩阵保持六边形中心的x和y坐标,该坐标添加到vx和vy阵列中,给出六边形上每个点的顶点。然后我对钻石做同样的事情:

h=fill(hexXY(i,j,1)+dvx,hexXY(i,j,2)+dvy,'r');

set(h,'edgecolor','r')
但是,正如我所说,六边形的黑色边缘通过红色显示出来。我提供了顶点的顺序,就像您绘制它们一样,尽管我认为这不重要。我试过使用uistack和patch,但都不管用。我不能将六边形边缘颜色设置为“无”,因为我也有白色六边形,如果我将背景颜色设置为黑色,则白色六边形之间会出现黑色线条。我必须移除黑色或白色六边形的边缘,因为在两个接触的地方,边缘会产生混乱的像素

有人能帮我弄清楚如何把红色钻石填好吗

编辑:我以前没有提到,这只发生在保存图形时。您无法在图形窗口中看到它。我尝试过使用print()和hgexport()并更改渲染器,但都没有效果。下面是一个小示例,其中包含从我的代码中提取的要运行的数字:

hold on
v1=[0.3929 0.4107 0.3929 0.3571 0.3393 0.3571];
v2=[0.6907 0.6598 0.6288 0.6288 0.6598 0.6907];
h= fill(v1,v2,'k');
set(h,'edgecolor','k')

v3=[0.3750 0.3929 0.3750 0.3571 0.3750];
v4=[0.6366 0.6288 0.6211 0.6288 0.6366];
h=fill(v3,v4,'r');
set(h,'edgecolor','r')

set(gca,'position',[0 0 1 1],'units','normalized')
set(gcf,'PaperUnits','Inches','PaperPosition',[0 0 5 5]);
hgexport(gcf, 'test', hgexport('factorystyle'), 'Format', 'tiff','Resolution',600);
以下是使用
hgexport
保存的图像:


尝试使边缘透明:

set(h,'edgealpha',0)

一些奇怪的事情导致了最初的问题。如果命令保持简单,则一切看起来都很好:

h1= fill([1,2,3,3,2,1],[2,4,3,2,0,1],'m');
set(h1,'edgecolor','m')

hold on
h2= fill([2,3,2.5],[2,1,pi],'g');
set(h2,'edgecolor','g')
但当前景三角形改变时,背景边向前移动

set(h2,'edgealpha',0) % an example of what can cause the problem to appear.
我不知道是什么原因造成的。

如果
set(h,'edgealpha',0)
不起作用(如@user1739107所建议),您可以尝试
set(h,'edgecolor','none')


在OSX R2012b上,两种解决方案都可以正常工作。

不幸的是,使边缘透明并不能解决问题。我也没有注意到,我应该注意到,这不会出现在“地物”窗口中,问题只在保存地物时出现。我尝试过使用print()和hgexport(),并更改渲染器,但这也没有帮助。我似乎没有发现你发布的示例代码有任何问题,它做的不是同一件事。当我使用我的格式代码时,你的示例中,你可以通过填充看到行。哦,出于某种原因,我担心的行问题停止了发生。我不知道它为什么会消失,或者我想当我移除b和w六边形的边缘颜色时,它足够聪明,可以正确地进行操作。或者是bc,我现在在一台不同的电脑上。嗯,我想当时我甚至不需要问这个问题。谢谢你的帮助!不客气。我很高兴它自己解决了,尽管很高兴知道为什么!从不一致性来看,这似乎是一个在数学端的错误。我不能将六边形上的边缘颜色设置为“无”,因为我会在黑色六边形之间显示白线。我不能将背景颜色改为黑色,因为这样我会在白色六边形之间显示黑色线条……我使用的是R2013b,所以这可能是相关的。你可以尝试玩,或者在
z
轴(顶部为红色)中定义补丁。哦,我想在这一个上的另一个答案上发表评论。我的问题消失了,只需去除边缘颜色就可以了。谢谢你的帮助!