如何精确控制 MATLAB 绘图中的线条粗细?
How to precisely control line thickness in MATLAB plot?
我想精确控制在 MATLAB 中绘制的线条的粗细。不仅仅是 0.5, 1, 2, 3, ... 点,而是例如0.2 毫米。可能吗?
导出设置中有自定义线比例和最小线宽框 window,但这不起作用。
示例代码:
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 点(或 "Desktop Publishing Point")= 1/72 英寸的标准定义。
(您可以通过导出一个图形来轻松确认这一点,例如,一条 'LineWidth' 等于 36 的线。如果您不按比例打印,纸上的线将是 1/2 英寸宽)
所以如果你想要0.2mm的线,可以将线宽设置为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。有关相关错误,请参阅 here。所以 'workaround' 就是坚持 linewidth>=1。
虽然它似乎也在那里不起作用,但我强烈建议 export_fig 作为 Matlab 内置打印功能的替代方法。
我想精确控制在 MATLAB 中绘制的线条的粗细。不仅仅是 0.5, 1, 2, 3, ... 点,而是例如0.2 毫米。可能吗?
导出设置中有自定义线比例和最小线宽框 window,但这不起作用。
示例代码:
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 点(或 "Desktop Publishing Point")= 1/72 英寸的标准定义。
(您可以通过导出一个图形来轻松确认这一点,例如,一条 'LineWidth' 等于 36 的线。如果您不按比例打印,纸上的线将是 1/2 英寸宽)
所以如果你想要0.2mm的线,可以将线宽设置为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。有关相关错误,请参阅 here。所以 'workaround' 就是坚持 linewidth>=1。
虽然它似乎也在那里不起作用,但我强烈建议 export_fig 作为 Matlab 内置打印功能的替代方法。