【问题标题】:Discrete colorbar with postscript output in MatlabMatlab中带有postscript输出的离散颜色条
【发布时间】:2014-02-18 11:41:04
【问题描述】:

我在 Matlab 中创建了一个图形,它使用离散颜色条和自定义颜色图。理想情况下,我想将其保存为附言图(.eps),以便我可以在 Inkscape 中进行一些编辑。但是,当我将其保存为 .eps 格式时,在 Inkscape 中(在其他程序中)查看时,颜色条似乎是连续的。我需要做些什么来阻止这种情况?

我还尝试将图形保存为似乎可以工作的 PDF(颜色栏在我用来查看/编辑它的任何程序中都是离散的),但在 Inkscape 中进行了一些编辑并重新保存为 PDF(或其他格式,如.eps 和 .png),颜色条再次切换回连续。

这是我的颜色条的代码以及我用来保存它的代码:

cmap=[118 18 19;
      118 18 19;
      184 18 21;
      230 38 44;
      255 127 0;
      255 191 0;
      247 217 9;
      255 248 140;
      182 237 240; 
      145 205 237;
      107 174 232;
      61 144 227;
      32 114 214;
      0 66 135;
      0 31 103;
      0 31 103;
      0 31 103;
      0 31 103;
      0 31 103;
      0 31 103];
cmap=cmap/255;
colormap(cmap)
caxis([-20 30]
cb=colorbar('XTick',[-15 -12.5 -10 -7.5 -5 -2.5 0 2.5 5 7.5 10 12.5 15],'Xlim', [-17.5 17.5]);
export_fig fig1 -pdf -eps -r600 -painters

这是颜色条的 PDF 版本(希望如此)。我不知道如何发布 EPS 版本。

如何阻止颜色条连续显示?我真的需要做一些编辑,因为我无法让 Matlab 在我的颜色条末尾做箭头,我可能也需要玩弄文本。

【问题讨论】:

    标签: matlab postscript colorbar


    【解决方案1】:

    这是一个与 Inkscape 如何导出位图有关的问题,讨论了here。解决方案是在文本编辑器中打开有问题的 pdf 文件(Inkscape 输出的那个),找到该行

    /Interpolate true
    

    并将其替换为

    /Interpolate false
    

    【讨论】:

    • 这可能是一个愚蠢的问题,但是如何在文本编辑器中打开 pdf 文件?我是 Windows 用户,以防万一。我已经尝试过我拥有的各种编辑器,但它并没有显示任何可以理解的东西!
    • 将 pdf 文件拖到您的 MATLAB 编辑器窗口中 - 它将作为文本文件打开。然后按 ctrl+F 并在“查找内容”框中键入\Interpolate true,在“替换为”框中键入\Interpolate false,然后单击“全部替换”。保存文件,然后在 Adob​​e Reader 中打开,看看插值是否消失。
    • 好的,我已经在 Matlab 编辑器窗口中打开了 PDF,但它仍然到处都是随机字符。有几行清晰的代码,发现在任何地方都找不到\Interpolate(我也试过用小写的“i”。我一定是做错了什么!
    • 耻辱。我只能说它在你的例子中对我有用。也许您创建的实际图形更复杂。
    • 顺便说一下,你应该在 Inkscape 输出的 pdf 上执行此操作,而不是 export_fig() 输出的 pdf。
    【解决方案2】:

    我设法阻止这种情况的唯一方法是使用该部分中的离散颜色重新着色 Inkscape 中颜色条的每个部分。实际上,我认为这只是在该框中插入了另一个该颜色的矩形,但它工作正常。如果我的标记没有完全分隔颜色条的每个部分,这将不起作用。

    不是一个漂亮的解决方案,但它对我有用!

    【讨论】:

      【解决方案3】:

      您可以使用

      以矢量格式打印
      print(gcf, '-dpdf', 'fig.pdf');
      

      您还可以将图窗的renderer 属性设置为zbuffer 用于栅格图。

      set(gcf,'Renderer','zbuffer');
      

      显示和打印离散的颜色条。

      【讨论】:

      • 用于屏幕渲染的渲染器与用于硬拷贝输出的渲染器不同。此外,您只想将画家渲染器用于矢量格式输出。
      • 我不想要光栅图。它必须是一个向量。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2016-04-07
      • 1970-01-01
      相关资源
      最近更新 更多