MATLAB Answers

How to change the linewidth in a figure before actually plotting some?

조회 수: 403(최근 30일)
Ruben 2 Dec 2014
편집: dpb 6 Dec 2014
I'm working on a matlab function that automatically opens your figure in full screen mode and on a second monitor if present. So far, everything works fine. I already achieved to set the fontsize inside the function, so whitout plotting anything and without making xlabel(..) etc.:
% Fontsize used at the figure
if ~exist('fontsize_manual','var')|| isempty(fontsize_manual)
Now is my question: Can I change in a same way the linewidth of the lines that will by plotted in the figure? So also here, predefining the linewidth inside the function and later on in your script plotting some lines etc. I do prefer this works only for the figure you're working on, so that you can change this 'default' for each figure and save them all with different linewidth and fontsizes if needed.
I tried the line below, but that only changed the linewidth of the axis.
Is there anyone who can help me solving this problem?

  댓글 수: 0

로그인 to comment.

채택된 답변

dpb 2 Dec 2014
Use the technique of the referenced page but set the default for the figure in question --
NB: the default properties are named in run-on fashion--the name of the object you're setting then the property within that object all preceded with the keyword 'Default'. Here that's
to separate the subsets visually. I think it would've been easier if TMW had used such nomenclature or a structure form instead (and probably the parsing internally would've been simpler as well).

  댓글 수: 9

표시 이전 댓글 수: 6
dpb 4 Dec 2014
And, the calling sequence you show of
lijn1=plot(x(4:5),[epsilon(4) epsilon(4)],'k');%,'linewidth',2);
causes the first figure to be opened, then an axes is created and plotted onto with plot prior to the subsequent call to fancy_figure. At that point, that is the current axis and the handle which gca will return...
Ruben 4 Dec 2014
That was indeed the kind of code badness I expected that would give the 'strange' result and I slowly get your explanation. Maybe I have some time left this weekend XD
Do you get the point, what I want to reach with this function? If yes, do you have a smart idea or can you explain short what I maybe can do better, more careful etc?
dpb 4 Dec 2014
Primarily it looks like everywhere you have a gca you really want something that goes back to your original question and to probably try to set defaults for the just-created figure using
or the desired property/properties on the various other objects besides Line. You'll have to investigate which are and are not inherited from the figure; I don't know that otomh. In the initial query the linewidth property is; I've not investigated for the various font properties from whom they get derived. But, if you can't get to them from the figure then you'll have to have another level at which you create and save the right handles for the axes if you do want to make these dependent on specific figures and axes within those figures rather than global.
It's all doable; you just have to figure out where is the highest point in the object hierarchy you can do so. Try the figure first, obviously, but as soon as you use gca you've gone to an axes level, not figure so you'll have to see if it works substituting gcf first, then switch to the actual figure. If gcf fails because of invalid property then you've got to make the axes object and use (and save) that handle that's tied with the given parent figure.

로그인 to comment.

추가 답변(1개)

Robert Cumming
Robert Cumming 3 Dec 2014
This will set the line width for all plots in the current session
The technique your using in @dpb answer only sets the current axes (i.e. gca).

  댓글 수: 1

Ruben 3 Dec 2014
Yeah, but I would have the freedom to choose the linewidth of the plotted object per figure... (A) So the answer @dpb is more suitable for my problem.

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.

Translated by