Change default figure properties?

Is there any way to change the default figure properties in MATLAB?
For example, I want all my figures to have a certain axis font size, background color, xlabel/ylabel font size, and line width. Nothing fancy, just want to change some basic default settings.
I know how to do this for each individual plot in my scripts. However, I am generating several different types of plots (plot, hist, surf, etc) and a lot of them from several different scripts.
Thanks for any help with this.

2 个评论

Yes, there is.. I am using it for all my matlab figures.
set(groot,'defaultLineLineWidth',2.5)
set(0,'DefaultaxesLineWidth', 1.5)
set(0,'DefaultaxesFontSize', 14)
set(0,'DefaultaxesFontWeight', 'bold')
set(0,'DefaultTextFontSize', 14)
set(0,'DefaultaxesFontName', 'Times new Roman')
set(0,'DefaultlegendFontName', 'Times new Roman')
set(0,'defaultAxesXGrid','on')
set(0,'defaultAxesYGrid','on')
Do you know how to the reset those properties?

请先登录,再进行评论。

 采纳的回答

I don't know if there's a way to change the defaults, but you'll save a lot of work if you create a function to apply your 'default' settings to any supplied figure. Pass in a handle to that figure.
function = SetFigureDefaults( f )
% Put all your common code in here
end
That will make your code a whole lot more readable. You can hide this function in your script so that it's not visible to the outside world. That way you can take advantage of this approach in many other scripts without getting confused.

4 个评论

Yeah, I was thinking some thing like that, but there does not seem to be any "global" functions for changing basic defaults as I mentioned above.
Say for example, I want to generate following two figures,
figure(1)
plot(x,y)
xlabel('X')
ylabel('Y')
title('X vs Y')
figure(2)
hist(R,100)
xlabel('R')
ylabel('N')
title('Hist')
If I want a white background (as opposed to the default grey) and a given font size for xlabel/ylabel and a different font size for the title, I have to use,
figure1 = figure('Color',[1 1 1]);
plot(x,y)
xlabel('X','FontSize',14)
ylabel('Y','FontSize',14)
title('X vs Y','FontSize',18)
figure2 = figure('Color',[1 1 1]);
hist(R,100)
xlabel('R','FontSize',14)
ylabel('N','FontSize',14)
title('Hist','FontSize',18)
What functions/commands would change these defaults?
Well, you need to store your axis handle from those plots to change the labels etc... But you could just do this one at the time by using the current figure (gcf) and current axis (gca).
As for setting properties...
set(gcf, 'Color', [1 1 1])
set( get(gca,'XLabel'), 'FontSize', 14 )
etc...
You have to call SetFigureDefaults() AFTER you do your axis labelling and title...
xlabel('X'); ylabel('Y'); title('X vs Y');
SetFigureDefaults(gcf);
If you're just using gcf and gca, don't bother having an argument to your defaults function.
Got it, seems to work. I have to set all these properties in a script (.m file) and call it after every figure.
Thank you very much for your help.

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2012-5-4
编辑:Wendy Fullam 2013-2-4

5 个评论

Thanks for the link explaining the figure hierarchy structure in MATLAB. All so useful with the above post.
That link shows you how to set figure defaults. For example,
set(0, 'DefaultFigureBackground', [0.2 0.7 0.5]);
A link to the relevant section of the page provided by Walter: http://www.mathworks.com/help/techdoc/creating_plots/f7-21465.html#f7-18841
That seems to no longer work in R2017a.
I would very much like to kill the 'autoupdate' feature of 'legend' in one single global action. It seems there should be some way to set the default for the 'legend' aspect of 'plot'.
David, you asked this as a separate question and the comment you left indicates you found a solution.
Ah, I see why you said this no longer works. The URL changed for the page to which Walter link; the updated address is:
https://www.mathworks.com/help/matlab/creating_plots/default-property-values.html
Or you can search for the phrase "default property values" and that should work regardless of which release you're using. The version of that page appropriate for the release you're using should be among the first page of hits, if not the first hit.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Creating, Deleting, and Querying Graphics Objects 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by