文件交换

图像缩略图

Hatchfill2

版本3.0.0.0(58.3 KB)通过 凯什Ikuma
填充的区域用阴影线或斑点(由Neil坦登更新原始hatchfill)

62个下载

更新2018年1月11日

查看许可证

这次提交由尼尔·坦登更新流行的提交(#30733)以地方影线片对象的图案。主算法,以形成阴影图案遗体大多相同的原始而更多格式选项被暴露给用户并hatchfill2带来了HG2图形系统(因为R2014b)的支持。万博1manbetx
特征:
*支万博1manbetx持的基础的图形对象:PATCH,HGGROUP,AREA,BAR,和轮廓的对象附加支撑。预HG2(预R2014b)MATLAB版本不再支持。万博1manbetx
*支万博1manbetx持3D曲面。注:孵化器不能正常出来的曲面。
*四种类型的阴影图案:
- “单”单线路
- “十字”出卖孵化
- “散斑”修补边界内的斑点(部分支持)万博1manbetx
- “outspeckle”的边界(部分支持)以外的斑点万博1manbetx
*用户可定义的选项现在通过参数名称/值对输入参数接口进行设置。选项包括HatchAngle,HatchDensity,HatchOffset,HatchColor,HatchLineStyle,HatchLineWidth,SpeckleMarkerStyle和SpeckleFillColor
*活动的格式 - 舱盖线条对象监听到的补丁对象或轴的变化,以保持孵化真正以用户选择所有的时间(没有在这个时候打印的支持)万博1manbetx
*基本图形对象属性中的舱口线对象的(可见,裁剪,的HitTest,可中断,BusyAction,和UIContextMenu)被同步到基片对象。通过“上” HatchVisible选项要么设置或“关”只有Visible属性可德联。

注意:
*斑点多面修补和HG2轮廓不正确实施。如果有人需要这个功能固定,张贴请求,我会看看我能做些什么。

待办事项的:
*打印支持 - 万博1manbetx实施“打印模式”类似lateximage
*多面斑点支持 - 消除所有在gethgd万博1manbetxata内部边缘
*联想支持 - 万博1manbetxHG2正在如果不是不可能的这个真正具有挑战性。用户建议使用legendflex(FEX#31092或https://github.com/kakearney/legendflex-pkg)。请参见下面的Drecalde&SeungHyoung刘某如何到的意见。多谢你们!!

引用作为

凯什Ikuma(2020年)。Hatchfill2(//www.tianjin-qmedu.com/matlabcentral/fileexchange/53593-hatchfill2),MATLAB中央文件交换。检索

评论和评分(57

梦莹周

@丹尼感谢您的精彩作品!它为我节省了一天!

PPM

谢谢〜这是非常有用的。

我做了一个简单的功能,简单的线条添加到图例项。当然,也可以提高,但对我而言是足够的。

功能hatchLegendEntry(legendObjects,entryIndex)
%hatchLegendEntry应用一个基本舱口在一个直条图的图例条目。
%更改广场两个三角形。

OBJ = legendObjects(entryIndex);

升=的findall(OBJ, '类型', '贴剂');
V = GET(1, '顶点');

V2 =零(8,2);

V2(1,:) = V(1,:);
V2(2,:) = V(2,:);
V2(3,:) = V(3,:);
V2(4,:) = V(1,:);

V2(5,:) = V(1,:);
V2(6,:) = V(4,:);
V2(7,:) = V(3,:);
V2(8,:) = V(1,:);

面=零(2,4);
面(1,:) = [1 2 3 4];
面(2,:) = [5 6 7 8];

组(1, '顶点',V2);
组(1, '面',面);

结束

一个例子:

[legend1,legendObjects] =图例(axes1, '节目');
indexBar = 3;
indexBarLegendEntry = 12;
hatchfill2(errorBars(indexBar), '单', 'HatchAngle',45);
hatchLegendEntry(legendObjects,indexBarLegendEntry);

亲爱的开发者:
非常感谢您惊人的工作!当我使用这个功能,孵化我吧数字与斑点,我发现斑点将超过每栏的边界和斑点是随机分布在酒吧。这两样东西让身材看起来很难看。所以,我不知道是否有任何方法来解决我的问题。

MAXV

良好的功能,让我产生对3D平面补丁孵化。最大的问题是它推动了该补丁即使补丁平行于Y-Z平面上的原点。

这是很容易,使用get(GCA,“扩展数据”),并设置固定(GCA,“扩展数据”),一旦我已经定义了所有非NaN值的x值我想要的。

很好!

文强刘

丹尼

这是很可爱的功能。这是很好的工作,我希望我会永远使用这个。以下代码是绘制使用legendflex图例条的一个例子。

图(1); CLF;
H =巴(兰特(10,3));
hatchfill2(H(1), '单', 'HatchAngle',0, 'HatchDensity',30, 'HatchColor', 'W', 'HatchLineWidth',1.5);
hatchfill2(H(2)中, '单', 'HatchAngle',135 'HatchDensity',30, 'HatchColor', 'W', 'HatchLineWidth',1.5);
hatchfill2(H(3), '单', 'HatchAngle',45, 'HatchDensity',30, 'HatchColor', 'W', 'HatchLineWidth',1.5);
[〜,legend_h,〜,〜] = legendflex(H,{ 'EX1', 'EX2', 'EX3'});
hatchfill2(legend_h(长度(H)+1), '单', 'HatchAngle',0, 'HatchDensity',10, 'HatchColor', 'W', 'HatchLineWidth',1.5);
hatchfill2(legend_h(长度(H)2), '单', 'HatchAngle',135 'HatchDensity',10, 'HatchColor', 'W', 'HatchLineWidth',1.5);
hatchfill2(legend_h(长度(H)3), '单', 'HatchAngle',45, 'HatchDensity',10, 'HatchColor', 'W', 'HatchLineWidth',1.5);

凯什Ikuma

@Jiangpeng崔 - 因为我没有映射工具箱,我不能测试你的代码。请图文件附加到您的MATLAB的答案后(或发邮件给我)

江鹏崔

一个非常强大的工具。但如何增加孵化地理地图上?下面的代码做的工作。
R = georasterref(......);
[〜,H] = contourfm(显著,R,[1 1]);
集(H, '标签', 'HatchingRegion');
马力= findobj(GCA, '标签', 'HatchingRegion');
H1 = hatchfill2(马力);

凯什Ikuma

@Lydia - 取决于其底层的图形对象类型。我不熟悉m_contourf,这并不似乎是一个内置MATLAB功能。如果你给我发电子邮件保存的数字,其包含m_contourf情节,我可以看看它。

非常酷,非常感谢!有没有办法使用这个2D地图上的坐标网格线的方法吗?(使用m_contourf代替contourf)

凯什Ikuma

@geopap - 我的坏,不PlotChildren,但传说对象的EntryContainer属性包含手柄传说对象

凯什Ikuma

@geopap - 哦,现在我明白你在说什么。对不起,我误会你了。我不知道我有没有时间在这方面努力,但由于hatchfill2成立以来我已经获得了传说对象有一定的了解。如果你是精明用Matlab的图形,你可以在传奇的“PlotChildren”属性,其中包含栏的传奇人物对象闲逛。您应该能够运行在这些对象“hatchfill2”,并把所产生的阴影线手柄像传说中的“DecorationContainer”组对象的子女。这应该做的伎俩,只要你不改变之后什么...试试看吧(这将是巨大的,如果你与你所做的事报到!)

geopap

你是对的凯什Ikuma,但是,没有一个传奇。任何工作传奇例如将有助于!

凯什Ikuma

BTW,演示脚本有柱状图例子工程。

geopap

任何人都可以给使用传说中的酒吧工作的例子吗?我不能使用Drecalde&SeungHyoung刘某说明...谢谢

凯什Ikuma

刚刚上传第七版与3D表面支持和孵化发动机重大改造。万博1manbetx它应该解决的@Roland和@Andrea报告的bug。邮政/电子邮件,如果你遇到的任何问题。

我有在马特·希尔的评论后半部分提到了同样的问题。我有一个延伸到图形的边缘轮廓,但在这些轮廓区域的目标区域的逆hatchfull色调。有没有什么办法来解决此问题?

罗兰

很显然,从MATLAB版本R2017b的表面特性StripData是空的。这会产生错误,使用hatchfill2在酒吧情节时。我解决了该问题如下(见线773):

如果ishghandle(A, '酒吧')
I = 1:4 :(大小(V,1)+ 1);
其他
I =双(A.Face.StripData);
结束

不知道这是否解决办法涵盖所有​​情况。它为我工作至今。良好的工作anywa。最好,罗兰

哈哈

马特山

马特山

是否有防止填充内部轮廓是低于我们要求的限制孵化的方法吗?例如,孵化通过在圆环的中心0.2填充约束一个圆环形区域的面积,虽然这个领域是<0.2。

这不会对填充发生,但与设置,使用填充盖的背景颜色了,我在孵化图。

一个相关的问题,有补过,代码似乎很难孵化跨越数字的整个宽度的区域。这似乎随​​机孵化区..它是必需手动设置沿轴的轮廓?或者可以填补是透明的?我可以提供的示例代码,如果有帮助。

感谢您的帮助,这是一个非常有用的工具。

凯什Ikuma

@Guan - 你是什么意思“地图坐标轴”是什么意思?给我说明要孵出什么样的代码。

关健

谢谢你,并没有任何版本的地图坐标轴?

在3D补丁不起作用,它创建一个空的ZDATA矩阵。这是一个相同的,因为这就是我想用它来代表横截面

阿比盖尔

谢谢。非常清楚,不正是符合市场预期。

不正是它应该

记我们

我想出如何在legend_flex应用hatchfill2。就我而言,我的传说是从主线剧情separatedly绘制,这样事情变得更加容易:

数字;

legendflex(...);

拖延;

马力= findobj(GCA, '类型', '贴剂');
hatchfill2(HP(1)中, '横', 'HatchAngle',45, 'HatchSpacing',7 'HatchColor', 'K');

我希望它可以帮助别人。

问候。

一个Jenab

凯什Ikuma

@Hanna - 你与我的数据代码似乎工作得很好。其中,matlab版您使用的?如果你愿意,你可以直接与我联系,附上你的数据,所以我可以调试的问题。

我有一些问题与contourf hatchfill2。我觉得它并不总是填补了同一个区域,我在轮廓中指定。

这里是我的代码:
数字();
[C1,H1] = contourf(LON,经纬度,VAR,[1 1], '的LineStyle', '无');
HH1 = hatchfill2(H1, '单', 'HatchAngle',45)

它看起来像有可能会有一些问题,这里的功能?或任何人都可以点东西,我做错了?

谢谢!

凯什Ikuma

@Drecalde&SeungHyoung,感谢搞清楚如何与hatchfill2使用legendflex。非常感激!

@卢克 - 我能找回在新版本(V2.3 / R6)从轮廓对象的轮廓数据。请检查一下

@埃文 - 如果您的NaN的问题是与轮廓对象,应该固定在新版本中。如果您有其他来源的对象类型遇到了它,请发表更多的细节。谢谢。

@Drecalde,@Kesh Ikuma和@Jing_KU。Drecalde的方法效果很好在我的案件与改变一点点。通过使用该legendflex [legend_h,object_h,plot_h,text_strings] = outlegendflex({A,B,C})。
那么也许object_h有几个元件和存在栏类对象;也许在这种情况下object_h(4),(5),(6)。和他们每个人都有补丁对象作为一个孩子。
所以hatchfill(object_h(4)。孩子,~~~)将改变传说labeld的形象与 “一”。

我试图绘制阴影区域与包含的NaN矩阵,我有“填充”设置为“关闭”。舱口不停地从我的情节消失。我更换了NaN的用零(这是我下面的孵化阈值),这个问题是固定的。FYI的人谁遇到类似的困难。整体伟大的计划。

很有兴趣在“contour2patch”功能,如果你还是会考虑写一个。似乎使用相当关键。

非常有用的功能,谢谢。是“hatchspacing”的说法在“点”单位,或数据单元?

Drecalde

@Kesh Ikuma和@Jing_KU。我解决了使用legendflex.m从filexchange传说的问题。
我把第二输出从legendflex
[〜,OUT2,〜,〜] = legendflex(.....)
和hatchfill2适用于它。
hatchfill(OUT2(2)中, '单个')
希望这对你的工作

凯什Ikuma

@Jing_KU - 不幸的是,没有,没有。如果使用的是R2014a或更早的版本,有一个简单的办法,我想,我可以帮你。否则,它是一个长镜头,使其工作。拍我的电子邮件,如果你有兴趣进一步讨论。

Jing_KU

你解决与传说中的问题?
我找不到展示传说中充满补丁的解决方案。

非常期待您的回复。

莱纳斯

我还是遇到了问题,当“填充”设置为“关”舱口消失。

使用ylim工作!也就是得更快,如果ylim定义。

凯什Ikuma

@Wieger - 我有我的缓慢理论,但你需要等待在这一方面。同时,Y轴的问题,您有。难道是可以给我(或张贴在这里),产生症状的代码?(找到我在我的个人资料联系。)

一些它是如何在我的电脑很慢,但不是一个真正的问题。

我y轴越来越设置为100,-100。任何想法如何解决呢?

沃里克

先进的和有用的。谢谢。

马修

现在正确的文件。测试OK(R2015b)。

凯什Ikuma

@Mathew - 感谢您指出了这一点*捂脸*应该已经得到解决。

马修

凯什,你打错了文件上传到FEX。

凯什Ikuma

@Bill - 尝试我只是调升的最新版本。仅供参考,还有一个问题---如果填写“截止”孵化时的轴调整大小不会重绘。

可以为你服务好一个选择是contour2patch功能。如果你有兴趣,我可以大概煮一起来给你。让我知道。

比尔王

在MATLAB 2015B,该功能似乎不工作。当我跑演示(实施例1),事实证明,所述阴影区域是不再透明。然而,当我尝试集(H2,“补”,“断”),这两个舱口和背景颜色消失。我将有很多感激,如果你能帮助解决这个问题。提前致谢!

更新

3.0.0.0

启7
*增加了对3D面万博1manbetx支持
*移除HatchSpacing选项
*新增HatchDensity选项

2.4.0.0

修订版6(版本7)
*修正轮廓对象孵化行为,Rev.5号文件出台
*新增ContourStyle选项,启用快速绘制如果轮廓凸

2.3.0.0

转换轮廓改进支持对万博1manbetx象舱口

2.2.0.0

正确上传文件*捂脸*

2.2.0.0

(R 5)
*移除UseHG2唠叨警告
*围绕与填充HG2轮廓对象发行曾为=“关闭”

2.1.0.0

*增加了对HG2万博1manbetx Area对象的支持
* Bug修复

2.0.0.0

V2.0(R3)
*启用积极的格式
*启用基本属性同步

1.1.0.0

编辑说明

1.1.0.0

*修正了几个重大的错误孵化HG2面对象

MATLAB版本兼容性
创建了R2017a
与任何版本兼容
平台兼容性
视窗 苹果系统 Linux的
致谢

启发:Hatchfilllateximage

启发:画点画