WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Zeilenumbruch in Legende

 

LloydBlankfein
Forum-Anfänger

Forum-Anfänger



Beiträge: 13
Anmeldedatum: 18.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2020, 17:55     Titel: Zeilenumbruch in Legende
  Antworten mit Zitat      
Hallo,

ich möchte einen Zeilenumbruch in dieser Legende erzeugen:

Code:

legend(char(attrib(1,11)),char(attrib(1,12)),char(attrib(1,13)),char(attrib(1,14)),char(attrib(1,15)),char(attrib(1,16)),'Location','SouthOutside','Orientation','horizontal','Box','off');
 



Hiermit habe ich es ohne Erfolg probiert:
Code:

...,char(attrib(1,13)),'\newline',char(attrib(1,14)),...
...,char(attrib(1,13)),'\linebreak',char(attrib(1,14)),...
...,char(attrib(1,13)),'\n',char(attrib(1,14)),...
 


Was mache ich falsch?


Lloyd
Private Nachricht senden Benutzer-Profile anzeigen


T16
Forum-Century

Forum-Century


Beiträge: 145
Anmeldedatum: 31.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2020, 18:38     Titel:
  Antworten mit Zitat      
Versuch es mal mit char(10) als newline character oder mit der newline Funktion
https://www.mathworks.com/help/matlab/ref/newline.html (ab 2016 b).
Private Nachricht senden Benutzer-Profile anzeigen
 
LloydBlankfein
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 13
Anmeldedatum: 18.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2020, 19:29     Titel:
  Antworten mit Zitat      
Code:

legend(char(attrib(1,11)),char(attrib(1,12)),char(attrib(1,13)),char(10),char(attrib(1,14)),char(attrib(1,15)),char(attrib(1,16)),'Location','SouthOutside','Orientation','horizontal','Box','off');

legend(char(attrib(1,11)),char(attrib(1,12)),char(attrib(1,13)),newline,char(attrib(1,14)),char(attrib(1,15)),char(attrib(1,16)),'Location','SouthOutside','Orientation','horizontal','Box','off');

 


char(attrib(1,14)) wird jeweils nicht mehr ausgegeben, ein Zeilenumbruch aber weiterhin nicht erzeugt. Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.07.2020, 20:56     Titel:
  Antworten mit Zitat      
Hallo,

schau mal auf File Exchange, z.B. das:
https://www.mathworks.com/matlabcen.....exchange/66464-gridlegend

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
LloydBlankfein
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 13
Anmeldedatum: 18.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2020, 18:38     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank soweit! GridLegend funktioniert wie beschrieben. Da ich allerdings mehre Plots in einem Fenster zeige (tiledlayout), habe ich nun ein Folgeproblem:

Zitat:

Warning: Unable to set 'Position', 'InnerPosition', 'OuterPosition', or 'ActivePositionProperty' for objects in a TiledChartLayout
> In gridlegend>locateLegend (line 468)


Ich erzeuge 6 Plots in einem Fenster:

Code:


tiledlayout(3,2);

ax1=nexttile;
hold on

handles1 = gobjects(6,2);
handles1(1,1) = plot(datetime(data(:,1), 'ConvertFrom','datenum'),data(:,11),"color",[0.64 0.08 0.18]);
handles1(2,1) = plot(datetime(data(:,1), 'ConvertFrom','datenum'),data(:,12),"color",[0 0.45 0.74]);
handles1(3,1) = plot(datetime(data(:,1), 'ConvertFrom','datenum'),data(:,13),"color",[0.30 0.75 0.93]);
handles1(4,1) = plot(datetime(data(:,1), 'ConvertFrom','datenum'),data(:,14),"color",[1 0.41 0.16]);
yyaxis right;
handles1(5,2) = plot(datetime(data(:,1), 'ConvertFrom','datenum'),data(:,15),"color",[0.4660 0.6740 0.1880]);
handles1(6,2) = plot(datetime(data(:,1), 'ConvertFrom','datenum'),data(:,16),"color",[0.75 0 0.75]);

RowNames={char(attrib(1,11)),char(attrib(1,12)),char(attrib(1,13)),char(attrib(1,14)),char(attrib(1,15)),char(attrib(1,16))};
ColumnNames = {'Y1','Y2'};
LegendOptions.Location = 'SouthOutside';
LegendOptions.Box = 'off';
gridlegend(handles1,RowNames,ColumnNames,LegendOptions);

hold off

ax2=nexttile;
hold on

handles2 = gobjects(6,2);
handles2(1,1) = plot(datetime(data(end-250:end,1), 'ConvertFrom','datenum'),data(end-250:end,11),"color",[0.64 0.08 0.18]);
handles2(2,1) = plot(datetime(data(end-250:end,1), 'ConvertFrom','datenum'),data(end-250:end,12),"color",[0 0.45 0.74]);
handles2(3,1) = plot(datetime(data(end-250:end,1), 'ConvertFrom','datenum'),data(end-250:end,13),"color",[0.30 0.75 0.93]);
handles2(4,1) = plot(datetime(data(end-250:end,1), 'ConvertFrom','datenum'),data(end-250:end,14),"color",[1 0.41 0.16]);
handles2(5,2) = plot(datetime(data(end-250:end,1), 'ConvertFrom','datenum'),data(end-250:end,15),"color",[0.4660 0.6740 0.1880]);
handles2(6,2) = plot(datetime(data(end-250:end,1), 'ConvertFrom','datenum'),data(end-250:end,16),"color",[0.75 0 0.75]);

RowNames={char(attrib(1,11)),char(attrib(1,12)),char(attrib(1,13)),char(attrib(1,14)),char(attrib(1,15)),char(attrib(1,16))};
ColumnNames = {'Y1','Y2'};
LegendOptions.Location = 'SouthOutside';
LegendOptions.Box = 'off';
gridlegend(handles2,RowNames,ColumnNames,LegendOptions);

hold off


 


Die 2 Plots, deren Legenden via Gridlegend erzeugt werden, haben die Positionen [1,1] und [1,2]. Plot [1,1] wird inklusive Legende ausgegeben und "verschwindet" sobald ax2=nexttitle ausgeführt wurde. Analog Plot [1,2] und ax3=nexttitle.

Letzlich wird ein Fenster mit den Plots [2,1][2,2][3,1][3,2] erzeugt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.07.2020, 20:12     Titel:
  Antworten mit Zitat      
Hallo,

ich würde es alternativ mit dem Vorgänger subplot statt tiledlayout versuchen. Vielleicht ist das ja kompatibel mit gridlegend.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
LloydBlankfein
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 13
Anmeldedatum: 18.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2020, 09:36     Titel:
  Antworten mit Zitat      
Das funktioniert leider auch. Vom Resultat her unterscheidet sich subplot nicht von tiledlayout.

Ursprünglich wollte ich gridlegend zwecks besserer Darstellung (Platzmangel wegen langen Legendennamen) nutzen. Ich habe jetzt ganz pragmatisch die Namen gekürzt. Sind nun etwas kryptisch, aber was solls.

Trotzdem, vielen Dank Harald!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.