失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab保存高清图片png svg pdf等

matlab保存高清图片png svg pdf等

时间:2023-03-12 11:55:01

相关推荐

matlab保存高清图片png svg pdf等

在实际的使用过程中不同场景常常需要不同的图片格式。

如果直接在图窗中导出当然可以,但一个一个的导出有些麻烦,最方便的还是写成代码。

对于a及以后的版本,请使用exportgraphics函数。太强大了!

对于之前的版本,只能使用saveas和print函数。

关于gca和gcf

gca对应的是坐标(axis),gcf对应的图窗(figure),但一般而言似乎没什么区别。出现区别应该是对那种具有超出坐标区边界的注释的绘图而言的,比如下面这种。

保存路径的问题

如果不设置路径的话就保存在当前目录下了,一般而言会有些乱,这时应用相对路径会方便的多。

x = [2 4 7 2 4 5 2 5 1 4];bar(x);saveas(gcf,'.\figures\Barchart.png')

导出png

png应该是最通用的一种格式了,虽然不是矢量图但一般情况下600dpi的png也足够用了。

一般而言saveas函数支持的格式足够多了,但对非矢量图而言似乎不能直接在代码中设置分别率

可参考链接 /u014636245/article/details/83010659

有时候对于导出分辨率不满足要求,还可以利用matlab 的 print 函数来进行导出。

%在做好图后,fig显示当前需要保存的图像img =gcf; %获取当前画图的句柄print(img, '-dpng', '-r600', './img.png') %即可得到对应格式和期望dpi的图像%第一个参数为fig的句柄,第二个-r后加对应的分辨率dpi,第二个为-d加对应的图像格式%最后加上文件路径及名称字符串。%https://edoras.sdsu.edu/doc/matlab/techdoc/ref/print.html%http://cens.ioc.ee/local/man/matlab/techdoc/ref/print.html%/help/matlab/ref/print.html

此外对于图像,还可以使用imwrite:

img = getimage(gcf); %获取当前坐标系图像

imwrite(img,‘img.tiff’, ‘tiff’, ‘Resolution’, 600) %只有tiff可以使用Resolution参数, png可以使用X/YResolution, 参考help imwrite

导出emf或svg

直接使用saveas是可以的,但不知道为什么自己导出的svg图片在裁剪上似乎有问题。

导出的emf图片在Ai里看着是好好的,导入到Word中也被裁了一块,不知道原因何在。

exportgraphics函数似乎只支持emf不支持svg?在官方文档中没看到svg。

导出PDF

导出为pdf主要是为了插入LaTeX方便。

a以前版本

如果是a以前的版本,在保存是往往会出现整页只有一张图而大片空白的情况,这个时候没有太好的办法,后期裁剪毕竟麻烦。下面贴两个代码做权宜之计,之所以称其为权宜之计是因为生成的图片还是空白太多,应该和fig的papersize等属性有关,怎么修改没搞清楚。参考链接 /matlabcentral/answers/12987-how-to-save-a-matlab-graphic-in-a-right-size-pdf

% 示例1h = figure;plot(1:10);set(h,'Units','Inches');pos = get(h,'Position');set(h,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)])print(h,'filename','-dpdf','-r0')

% 示例2%% Crop and save MatLAB figure as PDFfunction savePDF(plot_path,plot_name)% check if directory exists, if not create oneif ~exist(plot_path, 'dir')mkdir(plot_path)endfig = gcf;fig.PaperPositionMode = 'auto';fig_pos = fig.PaperPosition;fig.PaperSize = [fig_pos(3) fig_pos(4)];print(fig,'-dpdf','-painters','-r600','-bestfit',strcat(plot_path,plot_name));end

a及以后版本

如果是a及以后的版本,使用exportgraphics函数。

参考链接

/p/268806430/p/259992634

x = linspace(-2*pi,2*pi);y1 = sin(x);y2 = cos(x);p1 = plot(x,y1,'->','MarkerIndices',1:3:length(y1));%每3个数据点标记一次hold onp2 = plot(x,y2,'-o','MarkerIndices',1:3:length(y2));%每3个数据点标记一次p1(1).LineWidth = 2;%设置第一个线条的线宽为2磅p2(1).LineWidth = 2;%设置第二个线条的线宽为2磅p1(1).Color = [0.8941176470588240.121568627450980 0.149019607843137];%对颜色进行设置p2(1).Color = [0.1921568627450980.498039215686275 0.717647058823529];%对颜色进行设置ax = gca;ax.XLabel.String = 'Time (\circC)';ax.XLabel.FontSize = 12;ax.XLabel.FontName = 'Arial';ax.YLabel.String = 'Amplitude';ax.YLabel.FontSize = 12;ax.YLabel.FontName = 'Arial';ax.YTick = -1.5:0.5:1.5;ax.XTick = -2*pi:pi:2*pi;ax.XTickLabel = {'-2\pi','-\pi','0','\pi','2\pi'};ax.XLim = [-2*pi 2*pi];ax.YLim = [-1.5 1.5];ax.FontSize = 12;ax.FontName = 'Arial';lgd = legend('\it{P}_{\rm{ev}}\rm =100kPa','\it{P}_{\rm{ev}}\rm =200kPa');lgd.NumColumns = 2;lgd.Box = 'off';lgd.FontSize = 12;lgd.FontName = 'Arial';%设置画布的大小以及在屏幕中间 位置set(gcf,'Units','centimeters','Position',[1.4 10 16 10.5]) %设置坐标区图的大小和位置set(gca,'Units','centimeters','Position',[2 1.2 12 9])exportgraphics(gcf,'peaks.png','Resolution',300);%输出分辨率为300的PNG图片exportgraphics(gcf,'peaks.pdf','ContentType','vector');%输出矢量pdf图片exportgraphics(gcf,'peaks.eps');%输出矢量eps图片

如果觉得《matlab保存高清图片png svg pdf等》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。