在MATLAB中绘图并保存为文件

11

我需要在MATLAB中绘制并保存图像文件。这里是我在“for”循环中调用的代码:

figure
scatter(data_x_pos,data_y_pos,'r*')
hold on
scatter(data_x_neg,data_y_neg,'b')
t = linspace(-80,80);
y = -model.w(1)*t/model.w(2);
plot(t,y,'k');
% need to save this plot to image to a file here

现在,这是我用于某些工作的起始代码,但我并不完全理解它(例如 - 命令“figure”)。有建议使用saveasprint,但我相信我需要它们的句柄。能否有人帮帮我?

谢谢。

2个回答

17

figure() 是一个返回图形句柄的函数:

f = figure()
scatter(data_x_pos,data_y_pos,'r*')
...
您可以使用此句柄来保存图形:
saveas(f, 'image.png');

查看Handle Graphics教程以获取更多信息。

scatterplot还返回指向点集合、线条或其他内容的句柄。


是的,谢谢。我也自己解决了。 gcf返回当前图形的句柄。所以,那也可以! - Navneet
比起 saveas 更好的方法是 options.Format = format; hgexport(f, 'image.png', options);。这样,导出的图形将会与屏幕上的完全一致。 - Martin Pecka

4

另一种可能有帮助的解决方案是利用Matlab更新一个名为gcf“获取当前图形句柄”的变量,每次创建图形时都会更新。即使没有使用f = figure();句柄声明命令明确地创建句柄,您仍然可以通过调用gcf句柄变量来使用print()saveas()等命令。例如,这个代码块也可能适用于其他人,他们没有OP的要求在具有唯一标识的大型for循环中操作:

scatter(data_x_pos,data_y_pos,'r*')
hold on
scatter(data_x_neg,data_y_neg,'b')
t = linspace(-80,80);
y = -model.w(1)*t/model.w(2);
plot(t,y,'k');
hold off;
saveas(gcf,'filename','png')

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