编者按:这个文件被选为MATLAB中心本周精选
这是先前提交的ApplatedHatch_plus的修改。
ApplyHatch_plusc创建定义图形的位图版本,其中拼写的彩色元素被指定的彩色填充图案替换。
APPLYHATCH_PLUSC允许定义舱盖图案的颜色。颜色可以使用字符字符串或RGB值来定义。本文提供了各种示例,展示了APPLYHATCH_PLUSC和MAKEHATCH_PLUS的一些可能性。
注意:此功能与Brandon Levey的ApplyHatch_plusColor不同,功能略有不同的功能和语法。
布莱恩·卡茨(2020)。applyhatch_plusc.(//www.tianjin-qmedu.com/matlabcentral/fileexchange/26797-applyhatch_plusc),Matlab中央文件兑换。检索到.
1.4.0.0. | 对报告错误进行小的修改。 |
|
1.3.0.0. | 如评注所指出的,修正了少于3种颜色的情况。 |
|
1.1.0.0 | 现在包括修改的makehatch_plus,以允许可变厚度的舱口 |
@brian katz你好,亲爱的Brian Katz先生,你现在更新了这个工具吗?我非常渴望在最新的Matlab版本中顺利使用您的工具。谢谢你。
请注意,我目前在最新的MatLab版本下工作有困难。一些被使用的隐藏的固有功能不再可用,替代功能的质量也不一样。所以,让你知道我正在努力……
嗨@ min-her。在您的示例中,这是不可能的,因为1和6从栏中的颜色相同。它是用于识别元素的原始颜色(参见说明“彩色元素被指定的彩色宽敞的图案替换为”)。如果它们在原始图中的颜色中是相同的颜色,则无法分配不同的舱口信息。您需要以不同的颜色为要定义的不同元素生成不同颜色的基本曲线。
嗨,@brain katz,我很抱歉打扰你。我有一个问题在使用这个函数,我不知道如何解决它。我想用堆叠的风格吧,同一个堆栈使用相同的堆栈和不同颜色。例如:
Num = [1 2 3 4 5;6 7 8 9 10];
x = [2,8];
酒吧(x, num,“堆叠”);
我希望第一个堆栈[1 2 3 4 5]使用相同的舱口和不同的颜色,[6 7 8 9 10]使用相同的舱口和不同的颜色。但是当我使用applyhatch_plusC时,我发现1和6有相同的舱口。你能帮我解决这个问题吗?谢谢!
@Brian,请在你可以的时候更新。我很想用这个!似乎没有这种类型的其他工具可用。谢谢你的辛勤工作!
正如@liruixinch所指出的,您可能需要调整DPI以获得您想要的结果。MatLab改变了BMP图像的创建方式,我不太喜欢它们。因此,将DPI移动到300或600将提供更清晰的文本,但您可能需要调整模式以使其可见。我会想办法定义不同的分辨率(文本和孵化),但我近期没有时间这么做。万博 尤文图斯
请测试导出到TIFF文件,以防质量差是MATLAB图像渲染也......
嗨,@brian katz,我是一名研究生。我可以使用matlab 2017b在文档中运行示例,但该数字未完成。我的意思是它丢失了一些功能或显示不匹配代码。而且,字母和数字非常模糊。你能帮我解决这个问题吗?非常感谢
@Shuppar,你似乎没有遵循函数语法,我不知道你想做什么,因为它是不正确的。请试着举例并改正,从简单的例子开始。PATTERN和PATTERNCOLORS必须相同的长度。
applyhatch_plusC (h、模式、patterncolors)
applyhatch_pluscolor (fh,“x + /。\ |。', 1, [1 1 1 1 0 1 1], ct);
错误使用makehatch_plus
输入参数太多。
applyhatch_pluscolor错误(第195行)
模式= makehatch_plus(模式(pati)、6 * hatchsc lw);
为什么我得到上述错误?
感谢,此版本的代码可以在Matlab2018中运行。我们可以调整第5个输入参数以使数字更平滑。
注意:这个函数目前在MatLab的最新版本中有问题(从2017b开始)。我目前正在努力解决这个问题……这个错误不是规则的,但是会导致非独特的颜色/模式被归为属性。如果您现在继续使用,请检查您的输出。
丹尼,你有没有试着提高BMP输出打印的分辨率?这个注释在前面提到过,并且解决方案在函数中有很好的文档记录。
您好,我是使用Matlab 2018A的研究生。这段代码对我的酒吧工作非常好,但结果并不漂亮。我从这个代码中获得的图表看起来像我在80年代-90s发表的论文中看到的低质量数字。特别是字母不顺利。
这个函数应该很容易做到。抱歉,我不明白你的问题。你试过这个功能吗?困难是什么?
你好,如果我有一个法线图,在一个定义好的区域(x1,y1) -> (x2,y2)不是填充蓝色实心,而是填充蓝色对角线?
我不太明白这个评论。如果您的意思是数字(打勾标签等)的分辨率很差,那么这是因为该函数创建了一个BMP图像。如果分辨率不是您所喜欢的,您只需要增加DPI。这是我对已出版作品所做的,而不是屏幕分辨率(默认)。增加DPI也会影响模式密度,所以为了得到您想要的效果,可能需要进行一些操作。
谢谢你!但这个数字很难看。
我做了一些非常小的修改,函数现在又可以工作了。
我已经测试了所有示例,并且没有更多的问题报告。
似乎已经过时了,甚至这个例子甚至会导致Matlab R2015A的质量糟糕的剧情
你好,
使用“aplyhatch_plusc”函数时,我发现以下错误。
PATTERN和PATTERNCOLORS必须相同的长度。
请注意如何解决此错误。
提前谢谢。
你好,
我使用了applyhatch_plus和makehatch_plus,正如applyhatch_plus中给出的示例所示。然而,在这两种情况下,我得到的错误陈述如下:
例子:
酒吧(兰特(3,4));
im_hatch = applyhatch_plus (gcf \ - x。,600年);
错误信息:
"试图访问colorlist(1,2);指数从
界限,因为numel(colorlist)= 1。
applyhatch_plus>nextnonbw错误(第142行)
= (colorlist(out,1) == bits(:,:,1))
&...
applyhatch_plus错误(第69行)
(颜色、colori) =
nextnonbw (0 colorlist比特);“
我相信,人们已经多次使用它,它正在工作。
但我不确定我做错了什么。
感谢您的帮助。
这一修正现已被纳入最近的更新中。
当您测试长度时,现在在线95上,使用长度函数返回最长尺寸中的元素数(例如,a = [2x3],然后长度(a)= 3)这将导致图案色彩矩阵与<3种颜色(行)失败,因为长度(图案)<3和长度(图案色彩)= 3。
如果您使用size(patterncolors,1)而不是length(patterncolors)(在第95行条件中),这个问题将被删除,因为它只返回第一个维度的元素数量。
很抱歉,我不理解你提出的修改。pattern和PATTERNCOLORS的条目数量必须相等,否则组合会太少/太多。PATTERNCOLORS可以是一个颜色字符的字符串数组,也可以是一个3列的RGB值。这不能大于或小于3为RGB。
如果你有具体的例子有问题,请发给我。
我必须改变ApplyHatch_Plusc的第97行来处理具有少于3行的图案色彩的矩阵。
96:[patterncolors_row patterncolors_col] =大小(图案色彩);
97: if length(patterns) ~= patterncolors_row
98:错误(...)
99:结束
你认为你可以做这个,或者其他适当的改变,来允许矩阵少于3行。
ApplyHatch_Plusc适用于整个数字,包括子图,所以我不明白这个问题。但是,您不能为两个子图使用不同的阴影规则。但是,如果您确保原始子图没有任何常见的颜色,则仍然可以自由地使结果成为您想要的任何东西。
嘿,
不管怎样,把它和次要情节结合起来?
欢呼,
里卡多
好的!
好工具!
对我帮助很大!