如何使点线/虚线在等高线图中看起来很逼真 - Matlab

时间:2013-02-15 19:25:01

标签: matlab matlab-figure contour

Matlab图中的虚线/虚线在图形窗口中看起来有点精细,但是在打印时,它们会失去分辨率并且看起来非常糟糕。见下图。如何使虚线/虚线在屏幕上看起来完全一样?

Example Contour Plot with annotations on contours

3 个答案:

答案 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):

enter image description here

我喜欢这个解决方案,因为你没有将完全控制权交给一个函数 - 你控制图形的导出(通过print命令),但是你使用一个函数来调整最终的eps文件。 / p>