与matlab的imagesc不一致=>;插图画家
这是我在Matlab和Illustrator(2018 CC)中遇到的一个反复出现的问题:与matlab的imagesc不一致=>;插图画家,matlab,adobe-illustrator,Matlab,Adobe Illustrator,这是我在Matlab和Illustrator(2018 CC)中遇到的一个反复出现的问题: imagesc如果粘贴在illustrator中,很多数据看起来都有点不同。从科学的角度来看,这似乎很危险,从严格的最终用户角度来看,这似乎很难理解 有人能从技术角度解释这是如何发生的吗 有没有办法以矢量化的形式(不失真数据)创建密集的图像 用于重现所述问题的代码,下面的屏幕截图详细说明了一些可见问题: rng default %for reproducability, ver: Matlab2020b
imagesc
如果粘贴在illustrator中,很多数据看起来都有点不同。从科学的角度来看,这似乎很危险,从严格的最终用户角度来看,这似乎很难理解
图像
rng default %for reproducability, ver: Matlab2020b
data=smoothdata(rand([2000 40])-.5,2,"movmean",10); %some representative example data
[~,idx]=sort(mean(data(:,20:25),2));
figure; imagesc(data(idx,:));
caxis([-.35 .35]);
ylim([1979 2001])
图例:imagesc
复制到Illustrator(CMYK)文件中:
- 答:使用matlab中的
选项复制图形(在print('-clipboard','-dmeta')
之后)ylim([1980-2000])
- B:通过截图复制图形(在
之后)ylim([1980-2000])
- C:有问题的图形:全y比例图形:
,使用ylim([0 2000])
复制到Illustrator,然后手动放大。“宏观视图”似乎不能很好地反映实际数据(例如,放大时复制了第1984行)print('-clipboard','-dmeta')
imagesc
似乎只绘制一个画布,另一种解决方案是使用pcolor
每像素绘制一个补丁:
rng default %for reproducability, ver: Matlab2020b
data=smoothdata(rand([2000 40])-.5,2,"movmean",10); %some representative example data
[~,idx]=sort(mean(data(:,20:25),2));
figure;
h = pcolor(data(idx,:));
set(h, 'EdgeColor', 'none');
caxis([-.35 .35]);
% ylim([1979 2001])
这需要更多的内存,在我的小笔记本电脑上,复制到Inkscape需要几分钟的时间(我没有安装illustrator)
或者,也可以使用'-r300'
选项打印
来更改补丁分辨率。我想手册上说默认值是'-r150'
编辑
使用以下代码在imagesc
和pcolor
figure;
subplot(1, 2, 1);
h = pcolor(data(idx,:));
set(h, 'EdgeColor', 'none');
title('pcolor');
caxis([-.35 .35]);
set(gca(), 'layer', 'top')
% ylim([1979 2001])
subplot(1, 2, 2);
imagesc(data(idx,:));
title('imagesc');
set(gca(), 'YDir', 'normal');
生成以下图像(也不是我所期望的):
我猜“复制到剪贴板”功能会复制屏幕内容(并且会受到屏幕分辨率的影响)。如果以300DPI或更高的分辨率保存图形(使用导出并将渲染器设置为具有高DPI的光栅),是否会获得相同的输出?@lent2:你的意思是它实际上没有矢量化?这是我的猜测,我认为imagesc的默认行为是绘制画布,而不是保持数据矢量化。此画布的分辨率可能受您的屏幕限制(可能有其他设置/选项可以更改),我将发布一个解决方案如下使用此选项将图形导出为光栅格式,以便在其他地方导入:。这将产生比下面答案中的解决方案更好的结果。哇,在我手中,pcolor绘图看起来完全不同。。。我不能很好地在评论中发布图片,但如果你将pcolor和imagesc并排添加,它们看起来会有惊人的不同:-O这是怎么回事?这里的图形下采样,对于启用抗锯齿的复活节图形和光栅图形,它们看起来会有不同。两者都不“正确”,因为它们都不显示所有数据。