如何在MATLAB绘图中精确控制线厚?

如何在MATLAB绘图中精确控制线厚?,matlab,width,line,matlab-figure,Matlab,Width,Line,Matlab Figure,我想精确控制在MATLAB中绘制的线的厚度。不仅仅是0.5、1、2、3。。。点,但例如0.2mm。可能吗 “导出设置”窗口中有一个自定义线条比例和最小线条宽度框,但该框不起作用 示例代码: 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') MatLab使

我想精确控制在MATLAB中绘制的线的厚度。不仅仅是0.5、1、2、3。。。点,但例如0.2mm。可能吗

“导出设置”窗口中有一个自定义线条比例和最小线条宽度框,但该框不起作用

示例代码:

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')

MatLab使用1个PostScript点(或“桌面发布点”)的标准定义=1/72英寸

(您可以很容易地确认这一点,方法是导出一个具有“线宽”等于36的线条的图形。如果您在不缩放的情况下打印该图形,则纸张上的线条将为1/2英寸宽)

因此,如果需要0.2 mm的线条,可以将线宽设置为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时将线宽设置为最小值1。有关相关错误,请参阅。因此,目前的“解决办法”是坚持线宽>=1


尽管它在那里似乎也不起作用,但我强烈建议将其作为Matlab内置打印功能的替代品

简短回答:这是不可能的。建议:导出为矢量图形,并在后期处理中调整线宽。另一个建议是:指定点,可以控制图形大小(以像素为单位),也可以调整导出分辨率。您可以尝试创建一个解决方案。根据工作流的其他部分,您可能会发现最好使用不同的工具-LaTeX用户可以选择TikZ,matlab2tikz文件交换脚本很流行:您还可以传递命名参数,这可能有助于自动化根据此官方文档,应该可以使用线宽=0.3*单位::mm,但这仅适用于MuPAD,而不适用于正常绘图。您使用的是哪一版本的Matlab?这实际有效吗?我知道我可以设置任何小于1pt的值(参见我的示例代码,我使用0.1),但输出图上的线条并不细。@SzymonBęczkowski听到这个消息太好了。