Matlab图中的虚线/虚线在图形窗口中看起来有点精细,但是在打印时,它们会失去分辨率并且看起来非常糟糕。见下图。如何使虚线/虚线在屏幕上看起来完全一样?
答案 0 :(得分:2)
我遇到了这个问题,并在另一个论坛上找到了解决方案。有几种选择。如果您不介意导出到位图,您可以使用替代渲染器(OpenGL或zbuffer),但对我来说这不是一个可接受的解决方案。相反,您可以提取轮廓信息并绘制虚线。我欠这个解决方案的原始海报,但不记得我在哪里得到它。
[c1,h1] = contour(data, Contours,'--k')
% Take all the info from the contourline output argument:
i0 = 1;
i2 = 1;
while i0 < length(c1)
i1 = i0+[1:c1(2,i0)];
zLevel(i2) = c1(1,i0);
hold on
% And plot it with dashed lines:
ph(i2) = plot(c1(1,i1),c1(2,i1),'k--','linewidth',.5);
i0 = i1(end)+1;
i2 = i2+1;
end
% Scrap the contourlines:
delete(h1)
希望有所帮助! -D
答案 1 :(得分:1)
尝试使用FEX中的export_fig,它应该解决这个问题。
答案 2 :(得分:1)
我会使用Loren在她making pretty graphs的精彩帖子中建议的方法。它使用她编写的函数进入输出eps文件,并调整虚线的定义。在FEX上找到了fixPSlinestyle
。
figure('renderer','painters')
hold on
plot([1 2 4],[2 3 7],'r-','linewidth',13)
plot([1 2 4],[2.5 3.5 7.5],'b:','linewidth',13)
print(gcf,'-depsc2','withoutedit.eps')
fixPSlinestyle('withoutedit.eps','withedit.eps')
第一个数字(withoutedit.eps)显示在左侧,经过调整的eps linestyle后显示在右边(withedit.eps):
我喜欢这个解决方案,因为你没有将完全控制权交给一个函数 - 你控制图形的导出(通过print
命令),但是你使用一个函数来调整最终的eps文件。 / p>