我正在创建一系列图形,其中2个是线图。我正在尝试将这2条线图保存为jpeg,但是遇到了一些麻烦。使用saveas不起作用。
我也尝试使用print和hgsave执行此操作,但无济于事。我认为hgsave只能保存为无花果格式,因此可以解释这一点。我可以使用“文件”>“另存为”来手动保存图形,但是我也希望能够在代码中执行此操作。
此代码可以复制问题:
x = categorical({'X1', 'X2'});
test = randi(5, 2, 10);
figure;
Test_Line = plot(x, test, 'marker', 'o', 'linestyle', '-');
saveas(Test_Line, 'testline.jpg')
理想情况下,代码应该能够将图形保存到jpeg文件中。尽管如果不可能,则任何图像文件扩展名都足够。相反,我收到此错误:
无法从单元格转换为matlab.graphics.chart.primitive.Line。
这与10x1线对象有关吗?
任何帮助表示赞赏!
答案 0 :(得分:3)
您应该提供图形手柄,而不是线对象的手柄。您可以使用gcf
来引用当前图形:
x = categorical({'X1', 'X2'});
test = randi(5, 2, 10);
figure;
Test_Line = plot(x, test, 'marker', 'o', 'linestyle', '-');
saveas(gcf, 'testline.jpg')
或者(例如,当您创建了多个图形并且想要在脚本末尾保存它们时),存储图形句柄:
x = categorical({'X1', 'X2'});
test = randi(5, 2, 10);
fig = figure;
Test_Line = plot(x, test, 'marker', 'o', 'linestyle', '-');
saveas(fig, 'testline.jpg')