如何在MATLAB中通过命令行保存图形?

38

在MATLAB中,是否有一条命令可以自动将图形保存为FIGJPEG格式,或两者都保存?


实际上这是我的绘图:plot(x,y,'-bs','Linewidth',1.4,'Markersize',10)... hold all plot(Qx,Qy,'-.r*','Markersize',8) title('蛋白质链曲线','FontSize',14); legend('P点(输入)','Q点(输出)','Location','North');我想自动保存它,而不必等待绘图出现!但似乎不可能,因为我不能在同一图中定义多条曲线的变量。 - ABC-biophi
可能是重复的问题:http://stackoverflow.com/search?q=%5Bmatlab%5D+save+figure - Gunther Struyf
7个回答

66

使用saveas函数:

h=figure;
plot(x,y,'-bs','Linewidth',1.4,'Markersize',10);
% ...
saveas(h,name,'fig')
saveas(h,name,'jpg')

这种方法可以绘制图形并自动保存为 .jpg 和 .fig。您无需等待绘图出现并在菜单中单击“另存为”。如果需要绘制/保存大量图像,则可以使用此方法。

如果您真的不想让绘图出现(它仍然必须被加载,无法避免,否则也没有可保存的内容),则可以隐藏它:

h=figure('visible','off')

我已经尝试过了,但它显示出这个错误 ??? 错误:文件:CurvePlotter.m 行:3 列:1 MATLAB表达式意外。这是因为我的图中有 hold all! - ABC-biophi
在那个文件的第三行是什么?你知道,“hold all”本身就是一个命令,不要像这样使用它:“hold all plot(Qx,Qy,'-.r*','Markersize',8)”,而应该使用“hold all; plot(...)”。另外:学会调试 - Gunther Struyf

23

2

我认为你无法在不出现它的情况下保存它,但是只要使用print命令就可以以多种格式保存。请参阅此处发布的答案:在Matlab中保存imagesc输出


我已经尝试过了,但它显示出现错误??? 错误: 文件: CurvePlotter.m 行: 3 列: 1 Unexpected MATLAB expression.这是因为我的图中有 hold all! - ABC-biophi
1
@Abdullah,我感到困惑,因为您将完全相同的评论发布到两个答案中。您是在使用_print_命令还是_using_saveas_时遇到此错误?无论您使用哪个命令出现错误,我都可以让这段代码正常运行:`x = 1:100; y = rand(1,100); Qx = x; Qy = rand(1,100);plot(x,y,'-bs','Linewidth',1.4,'Markersize',10) hold all plot(Qx,Qy,'-.r*','Markersize',8) title('蛋白质链曲线图','FontSize',14); legend('P 点(输入)','Q 点(输出)','Location','North'); print(gcf, '-djpeg99', num2str(1)); hold` - Malife
我在这个页面上找了一下,但是没有找到如何将它保存为".fig"格式的方法。 http://www.mathworks.de/help/techdoc/ref/print.html - ABC-biophi
绘制(x,y,'-bs','Linewidth',1.4,'Markersize',10)图形 保持所有 绘制(Qx,Qy,'-.r*','Markersize',8) 标题为'蛋白质链曲线',字体大小为14; 图例为'P点(输入)'和'Q点(输出)',位置在'North' 将图形保存为jpeg99格式,并命名为1 同时保存为.fig格式但是我仍然不明白'gcf'是什么意思? - ABC-biophi

1
如果您想将其保存为 .fig 文件,hgsave 是 Matlab R2012a 中的函数。 在后续版本中,savefig 也可能可行。

0

imwrite(A,filename) 将图像数据 A 写入由 filename 指定的文件中,并从扩展名推断文件格式。


0

现在(2017年5月),MATLAB仍然缺乏一种强大的方法来导出图形,特别是在GNU/Linux系统中批量导出图形时。最好的选择是使用扩展export_fig

只需从Github下载源代码并使用即可:

plot(cos(linspace(0, 7, 1000)));
set(gcf, 'Position', [100 100 150 150]);
export_fig test2.png

-2

尝试执行以下代码: plot(var); saveFigure('title'); 它会自动保存为jpeg格式。


没有任何名为这样的函数。 - Gastón Bengolea
尝试一下,你会发现确实有一个,尽管“savefig”会提示警告信息。 - Thom
确实有一个...就像Thom所说的。但我需要更正一下,你需要执行saveFigure('title.jpg');但我也在网上看到了savefig online... - cedyd
那是 savefig 而不是 saveFigure - Franklin Yu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接