我有很多图形作为图形文件,并希望在函数中更改这些图形的字体大小和颜色。在这个例子中,它是一个条形图。
这是我的代码:
function changeproperties(fontsize, figdata)
openfig(figdata);
set(gca,'FontSize',fontsize);
set(gca,'FaceColor','r');
saveas(gcf,'graph.pdf','pdf');
end
它会更改fontsize,但不会更改条形颜色。
错误信息是:
使用
matlab.graphics.axis.Axes/set
时出错FaceColor
类没有Axes
属性。
changeallfonts
(第4行)中的错误set(gca,'FaceColor','r');
gcf
也不起作用。这是什么错?
答案 0 :(得分:3)
你说你打开已保存的.fig文件,所以你需要得到正确的条形对象(轴的子)后面(即它已经存在,创建它时不。一个非常强大的方法是使用findobj
:
function changeproperties(fontsize,figdata)
openfig(figdata);
set(gca,'FontSize',fontsize);
b = findobj(gca,'Type','Bar'); % returns a handle to the bar
set(b,'FaceColor','r'); % changes all bars in the current axes
saveas(gcf,'graph.pdf','pdf');
end
这样,如果您的轴包含其他对象,它们将不会受到影响。
此外,如果您使用该函数打开多个数字,您可能还想向其添加close
命令(close(gcf)
),否则更难保证当前轴确实你想改变什么。
答案 1 :(得分:2)
Fontsize
是轴的属性; FaceColor
不是。{
在命令窗口中输入gca
以查看。 FaceColor
是其子项的属性,hinted也是Wolfie的属性。
您需要bar
的句柄。
y = [75 91 105 123.5 131 150 179 203 226 249 281.5];
h=bar(y);
set(h,'FaceColor','r'); %or h.FaceColor='r' for MATLAB R2014 and later
由于你在这里使用的是fig文件,你没有bar
的句柄,所以你可以像这样使用轴的句柄:
ax=gca;
set(ax.Children,'FaceColor','r');