Matlab中的Geoshow - 打印到tiff文件时面部颜色发生变化

Posted

技术标签:

【中文标题】Matlab中的Geoshow - 打印到tiff文件时面部颜色发生变化【英文标题】:Geoshow in Matlab - facecolor changes when printing to tiff file 【发布时间】:2015-07-30 17:24:59 【问题描述】:

我的图是美国地图。除非指定,否则我希望所有州的 facecolor 都是白色的:

ax = usamap('conus');
states = shaperead('usastatelo', 'UseGeoCoords', true,'Selector',@(name) ~any(strcmp(name,'Alaska','Hawaii')), 'Name');
faceColors = makesymbolspec('Polygon', 'Name','Washington','FaceColor','red', 'Name','Alabama','FaceColor','red');
geoshow(ax, states, 'DisplayType', 'polygon', 'SymbolSpec', faceColors,'DefaultFaceColor','w','DefaultEdgeColor','black')
framem off; gridm off; mlabel off; plabel off

但是当我使用以下方式打印它时:

print -r600 -dtiff MyMap.tif

打开图,东边的一些州facecolor是黑色的。

为什么会这样,我该如何解决?谢谢。

【问题讨论】:

我无法重建您的问题。您使用哪个版本?在什么系统上? 我无法使用 Matlab 2016a 重现您的问题 好的,谢谢@Sardar_Usama @EBH 2015b 在 Mac 上 - 我会更新到 2016 年看看是否有帮助 我也用 2016a,在 windows 上。 【参考方案1】:

MATLAB 2016a 中不存在此错误。但是我在 MATLAB 2015a 中尝试了您的代码,并且得到了以下 .tif 文件作为输出(您在问题中也对此进行了描述):

有一种解决方法可以解决这个问题。在使用print 命令之前,写下下面这行:

set(gcf, 'color', 'w', 'InvertHardCopy', 'off');

它给出了所需的 .tif 输出文件,如下所示:

【讨论】:

【参考方案2】:

我还没有真正弄清楚为什么,但是当我将 DefaultFaceColor 设置为几乎白色时,它可以工作...

'DefaultFaceColor',[1.000 0.9792 0.9792]

【讨论】:

以上是关于Matlab中的Geoshow - 打印到tiff文件时面部颜色发生变化的主要内容,如果未能解决你的问题,请参考以下文章

怎么用matlab把压缩成tiff

怎样用matlab保存剪切的tif图像?

File "C: MATLAB7work mischouse. tiff”does not exist.

如何在matlab上画中国地图

将输出保存到文本文件而不覆盖和打印矩阵中的 N 个条目 [matlab]

MATLAB绘制中国地图超全教程