如何在MATLAB绘图中精确控制线条的粗细?

8
我可以帮您进行翻译。下面是您需要翻译的内容:

我希望能够精确控制在 MATLAB 中绘制的线条厚度。不仅仅是0.5、1、2、3等点数,而是例如0.2毫米。这可行吗?

在导出设置窗口中有自定义线比例尺和最小线宽框,但那并不起作用。

enter image description here

示例代码:

hf = figure;
ha = axes;
ha.Units = 'centimeters';

t = linspace(0,2*pi);
hl = plot(t,sin(t),'Linewidth',0.1);
axis tight

saveas(hf,'test','pdf')

6
简短回答:这是不可能的。建议:将其导出为矢量图形,并在后处理中调整线宽。另一个建议:好的,您可以指定点并控制像素尺寸以及导出的分辨率。您可以尝试创建一个解决方法来处理这个问题。 - Robert Seifert
2
根据您的工作流程,您可能会发现使用其他工具更为适合- LaTeX用户可以选择TikZ,而matlab2tikz文件交换脚本则很受欢迎:http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz-matlab2tikz。您还可以传递命名参数,这可以帮助自动化 http://tex.stackexchange.com/a/120151 - xenoclast
根据官方文档http://uk.mathworks.com/help/symbolic/mupad_ref/linewidth.html,应该可以使用LineWidth = 0.3 * unit :: mm。 - Ludi
但这仅适用于MuPAD,而不适用于普通绘图。 - Szymon Bęczkowski
你正在使用哪个版本的Matlab? - Matt
发布时2014b。 - Szymon Bęczkowski
1个回答

6

MatLab使用标准定义1个PostScript点(或“桌面出版点”)= 1/72英寸。

(您可以通过导出具有'LineWidth'等于36的线条的图形轻松确认此内容。如果您不进行缩放打印,则纸张上的线条宽度将为1/2英寸)

因此,如果您想要0.2毫米的线条,则可以将线条宽度设置为约为0.567:

h = plot([0 0],[0 1]);
set(h,'LineWidth',0.567);

如果您想将此设置为所有图表的默认线条宽度:

 set(0,'defaultlinelinewidth',0.567)

对于单个会话,或将其放入您的startup.m文件中以永久设置。

针对@szymon-bęczkowski的回应:在2014b及更高版本中,Matlab似乎存在一个错误,当导出为EPS或PDF时,将linewidth设置为最小值1。请参见此处了解相关错误。因此,“解决方法”是坚持linewidth>=1。

尽管似乎在那里也不起作用,但我强烈推荐export_fig作为Matlab内置打印功能的替代方案。


1
这真的能起作用吗?我知道我可以设置小于1pt的任何值(请参见我的示例代码,我使用了0.1),但输出图上的线条并没有变细。 - Szymon Bęczkowski
@SzymonBęczkowski,听到这个消息真是太好了。 - Carlos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接