Matlab print -dpdf 产生模糊线
Matlab print -dpdf produces fuzzy lines
我在 matlab 中将 2D 图打印为 pdf 时遇到问题。我正在尝试将以下图打印到文件中(pdf、eps、svg,无关紧要):
问题是在某些点上该行非常 "jiggly"(抱歉没有更好的词)。我放大了上半部分,所以你可以明白我的意思:
这显然不是matlab图形的问题window。但是当我把它打印成 pdf 时,它是这样的:
pdf、svg 和 eps 的结果相同。我想问题是 matlab 正在创建一个矢量化路径(这很好!)但是路径线太粗然后可以看到每个小尖峰。
这是我用来生成 pdf 的代码:
sTitle = 'trajectory';
sFile = 'Data/trajectory.mat';
sPdfFile = 'pdfs/trajectory.pdf';
linewidth = 1;
fontsize1 = 18;
fig = figure;
% Adjust figure window size
set(fig, 'Position', [100 100 1400 800]);
% Set title
title(sTitle);
% Get states
[s, t] = load_data(some_data);
% Draw trajectory
plot(s(1,:), s(2,:), 'linewidth', linewidth);
% Labels and stuff
xlabel('x^W [m]', 'fontsize', fontsize1);
ylabel('y^W [m]', 'fontsize', fontsize1);
set(gca, 'fontsize', fontsize1)
% Axis font
set( gca , ...
'FontName' , 'Helvetica' );
set(gca, ...
'Box' , 'on' , ...
'TickDir' , 'out' , ...
'TickLength' , [.02 .02] , ...
'XMinorTick' , 'on' , ...
'XGrid' , 'on' , ...
'XMinorGrid' , 'off' , ...
'YMinorTick' , 'on' , ...
'YGrid' , 'on' , ...
'XColor' , [.3 .3 .3], ...
'YColor' , [.3 .3 .3], ...
'XTick' , -5:1:5, ...
'XTickLabelMode', 'auto', ...
'YTick' , -5:1:5, ...
'LineWidth' , 1 );
% Adjust view
axis([-2.5 2.5, -2.7 0.5]);
% Correct data aspect ratio
daspect([1,1,1])
% Print to PDF
width = 10;
height = 5;
set(gcf, 'PaperPosition', [0 0 width height]); %Position plot at left hand corner with width 5 and height 5.
set(gcf, 'PaperSize', [width height]); %Set the paper to have width 5 and height 5.
print('-dpdf', '-r600', sPdfFile);
根据this answer,这是一个公认的错误,回答者提供了更正 EPS 文件问题的功能。
由于您正在创建 PDF,我建议使用 export_fig
(requires a Ghostscript install),在下面的测试脚本中,它会在生成的 PDF 中创建平滑的线条。
clc();
clear();
figure(1);
% Get states
n = 800;
x = linspace(0,2*pi,n);
s = [x.*cos(x);x.*sin(x)] + 0.3*exp(-0.3*[x;x]).*(rand(2,n)-0.5) ;
% Draw trajectory
plot(s(1,:), s(2,:), 'linewidth', 1);
axis([-20,20,-20,20]);
daspect([1,1,1])
% Print to PDF
print('traj.pdf','-dpdf', '-r600');
export_fig('traj2.pdf','-dpdf','-r600');
print
PDF 输出:
export_fig
PDF 输出:
我在 matlab 中将 2D 图打印为 pdf 时遇到问题。我正在尝试将以下图打印到文件中(pdf、eps、svg,无关紧要):
问题是在某些点上该行非常 "jiggly"(抱歉没有更好的词)。我放大了上半部分,所以你可以明白我的意思:
这显然不是matlab图形的问题window。但是当我把它打印成 pdf 时,它是这样的:
pdf、svg 和 eps 的结果相同。我想问题是 matlab 正在创建一个矢量化路径(这很好!)但是路径线太粗然后可以看到每个小尖峰。
这是我用来生成 pdf 的代码:
sTitle = 'trajectory';
sFile = 'Data/trajectory.mat';
sPdfFile = 'pdfs/trajectory.pdf';
linewidth = 1;
fontsize1 = 18;
fig = figure;
% Adjust figure window size
set(fig, 'Position', [100 100 1400 800]);
% Set title
title(sTitle);
% Get states
[s, t] = load_data(some_data);
% Draw trajectory
plot(s(1,:), s(2,:), 'linewidth', linewidth);
% Labels and stuff
xlabel('x^W [m]', 'fontsize', fontsize1);
ylabel('y^W [m]', 'fontsize', fontsize1);
set(gca, 'fontsize', fontsize1)
% Axis font
set( gca , ...
'FontName' , 'Helvetica' );
set(gca, ...
'Box' , 'on' , ...
'TickDir' , 'out' , ...
'TickLength' , [.02 .02] , ...
'XMinorTick' , 'on' , ...
'XGrid' , 'on' , ...
'XMinorGrid' , 'off' , ...
'YMinorTick' , 'on' , ...
'YGrid' , 'on' , ...
'XColor' , [.3 .3 .3], ...
'YColor' , [.3 .3 .3], ...
'XTick' , -5:1:5, ...
'XTickLabelMode', 'auto', ...
'YTick' , -5:1:5, ...
'LineWidth' , 1 );
% Adjust view
axis([-2.5 2.5, -2.7 0.5]);
% Correct data aspect ratio
daspect([1,1,1])
% Print to PDF
width = 10;
height = 5;
set(gcf, 'PaperPosition', [0 0 width height]); %Position plot at left hand corner with width 5 and height 5.
set(gcf, 'PaperSize', [width height]); %Set the paper to have width 5 and height 5.
print('-dpdf', '-r600', sPdfFile);
根据this answer,这是一个公认的错误,回答者提供了更正 EPS 文件问题的功能。
由于您正在创建 PDF,我建议使用 export_fig
(requires a Ghostscript install),在下面的测试脚本中,它会在生成的 PDF 中创建平滑的线条。
clc();
clear();
figure(1);
% Get states
n = 800;
x = linspace(0,2*pi,n);
s = [x.*cos(x);x.*sin(x)] + 0.3*exp(-0.3*[x;x]).*(rand(2,n)-0.5) ;
% Draw trajectory
plot(s(1,:), s(2,:), 'linewidth', 1);
axis([-20,20,-20,20]);
daspect([1,1,1])
% Print to PDF
print('traj.pdf','-dpdf', '-r600');
export_fig('traj2.pdf','-dpdf','-r600');
print
PDF 输出:
export_fig
PDF 输出: