Subscript in stackedplot DisplayLabels
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Sebastian Sprunck
le 18 Juil 2019
Modifié(e) : Yair Altman
le 13 Fév 2024
Hello everyone,
I'm trying to build a stacked plot with 3 graphs using Matlab 2018b's stackedplot-function. I'd like to write the corresponding DisplayLabels in TeX-style so that I can use subscripts, as can be done in regular plots without problem using e.g.
'T_{r}'
When I create a stackedplot using below code though, the labels are printed 'as is' instead of as a subscript:
s = stackedplot(f,If,'DisplayLabels',{'T_{r} = 50 ns','T_{r} = 20 ns','T_{r} = 10 ns'});
I've tried accessing Interpreter-properties and even setting
set(0,'defaultTextInterpreter','latex');
but couldn't get it to work as intended.
Can anyone please tell me how to do that?
Best regards
Sebastian
4 commentaires
Adam Danz
le 30 Juil 2019
Modifié(e) : Adam Danz
le 30 Juil 2019
Yeah, there are a few newer plotting functions that have a bunch of features on lockdown such as heatmap() and stackedplot(). I avoid using them which is unfortunate since they have some nice added features but when you can edit the basic, they become less useful.
Réponse acceptée
Yair Altman
le 31 Juil 2019
Modifié(e) : Yair Altman
le 13 Fév 2024
You can access the individual stacked-axes' properties via the hidden sub-property Axes of the stackedplot's AxesProperties property, and then modify the YLabel's Interpreter property to 'tex' or 'latex' (it's 'none' by default).
For example, to change the middle (2nd) YLabel:
s = stackedplot(...);
drawnow % ensure that the plot is updated before proceeding
axesProps = struct(s.AxesProperties(2)); % using struct() is undocumented
axesProps.Axes.YLabel.Interpreter = 'tex';
Note that using struct() to access internal object properties is undocumented.
Additional information: https://undocumentedmatlab.com/blog/accessing-private-object-properties
6 commentaires
Ron
le 4 Fév 2024
Modifié(e) : Ron
le 4 Fév 2024
Thankyou for responsding sir but I did try but it didnt do anything except the warning.
or there is something wrong with my code??
ss=stackedplot(error,'LineWidth',1.5);
ss.DisplayLabels = [sample_name,sample_name(1)+"_{abc}"];
axesProps = struct(ss.AxesProperties(4)); % using struct() is undocumented
axesProps.Axes.YLabel.Interpreter = 'tex';
Adam Danz
le 13 Fév 2024
The call to struct in this context is undocumented. It needs to be called after the stackplot is generated. This can be done by adding a drawnow before calling struct.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Line Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!