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

Legend

 

bham
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 29.11.12
Wohnort: England
Version: R2012a
     Beitrag Verfasst am: 18.03.2013, 14:54     Titel: Legend
  Antworten mit Zitat      
Hallo zusammen!

Ich habe eigentlich das gleiche Problem, ich möchte bei einem meiner Legendeneinträge (hier "ebh") die Länge der Linie verkürzen und wollte den Vorschlag von Sco benutzen:

Code:

h = legend([ebh, t, m, b], 'ebh', 't', 'm', 'b', 'Location', 'NorthWest');
ch = get(h,'child');
set(ch(2),'XData',[0.25 0.4]);
 


Dabei sind t, m und b errorbar-Plots die nicht verändert werden sollen und ebh ist ein line-plot.
Mit obigem Code bekomme ich allerdings folgenden Error:

Error using hg.text/set
The name 'XData' is not an accessible property for an instance of class 'text'.

Error in hIII_V2 (line 274)
set(ch(2),'XData',[0.25 0.4]);



Weiß jemand, warum? Und was ich anders machen muss? Confused Bin etwas ratlos, Danke schon mal für jegliche Hilfe!!

[EDITED, Jan] getrennt von http://www.gomatlab.de/legende-kast.....-linienlaenge-t14426.html
Private Nachricht senden Benutzer-Profile anzeigen
Gesplittet: 18.03.2013, 18:40 Uhr von Jan S
Von Beitrag Legende-Kasten: Größe und Linienlänge aus dem Forum Grafiken und Plots


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.03.2013, 18:43     Titel: Re: Legend
  Antworten mit Zitat      
Hallo bham,

Bitte hänge eine neue Frage nicht an einen altes Thema an. Andernfalls ist es verwirrend, ob neue Antworten Deine oder die Orginal-Frage betreffen und der "beantwortet"-Status wird ebenfalls sinnfrei. Danke.

Ausserdem ist das Trennen zeitaufwendig.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
bham
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 29.11.12
Wohnort: England
Version: R2012a
     Beitrag Verfasst am: 19.03.2013, 13:24     Titel:
  Antworten mit Zitat      
Hallo Jan,
das tut mir wirklich leid - ich dachte es wäre übersichtlicher (und einfacher für euch "Helfer") wenn man nicht für das vermeintlich gleiche Problem immer wieder einen neuen Thread aufmachen würde!

Bzgl. der Legende - ich hab mittlerweile gemerkt, es funktioniert, wenn ich nur für 'ebh' eine mache (auch wenn ich noch nicht ganz verstehe warum, weil Cococabana hatte im vorigen Thread ja auch mehrere Legendeneinträge).

Allerdings wenn ich nun versuche, die erstellte Grafik zu speichern (egal ob als bmp, jpg oder tiff) wird die Linie auf einmal wieder länger?! Shocked


Edit:
Ok habe dazu das hier gefunden: http://www.mathworks.co.kr/matlabce.....reader/view_thread/151519

Das tut's schon irgendwie, auch wenn ich das alles nicht so elegant finde, und meine Linie in der Legende ist jetzt vertikal auch nicht mehr mittig, was ich auch über YData nicht hinkrieg, wer weiß warum, aber was solls Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.03.2013, 16:06     Titel:
  Antworten mit Zitat      
Hallo
Um die Frage vom Oben zu beantworten:
Du bist auf eine Beschriftung gestoßen. Das kann sein dass in deinen Legend andere Kinderordnung ist als bei Sco das der Fall war. Kann auch auf unterschiedlichen Matlabversionen liegen
Also du brauchst nicht die Beschriftung

Versuch mal z.B so

Code:

h  = legend([ebh, t, m, b], 'ebh', 't', 'm', 'b', 'Location', 'NorthWest');
ch = findall(h,'type','patch');
set(ch(1),'XData',[0.25 0.4]);
 
 



oder gleich für alle:

Code:

h  = legend([ebh, t, m, b], 'ebh', 't', 'm', 'b', 'Location', 'NorthWest');
ch = findall(h,'type','patch');
set(ch,{'XData'},[0.25 0.4]);
 
 
Private Nachricht senden Benutzer-Profile anzeigen
 
bham
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 29.11.12
Wohnort: England
Version: R2012a
     Beitrag Verfasst am: 19.03.2013, 18:56     Titel:
  Antworten mit Zitat      
Hallo denny!

Danke für deinen Vorschlag, aber irgendwie scheint auch das nicht zu funktionieren, denn nun bekomme ich folgenden Error:

Index exceeds matrix dimensions.

Error in hI_V3 (line 214)
set(ch(1),'XData',[0.25 0.4]);


Mmmhm.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.03.2013, 19:44     Titel:
  Antworten mit Zitat      
Hallo

Ach so stimmt, du hast ja Linie, dann so
Code:
h  = legend([ebh, t, m, b], 'ebh', 't', 'm', 'b', 'Location', 'NorthWest');
ch = findall(h,'type','line');
set(ch(1),'XData',[0.25 0.4]);
Private Nachricht senden Benutzer-Profile anzeigen
 
bham
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 29.11.12
Wohnort: England
Version: R2012a
     Beitrag Verfasst am: 20.03.2013, 15:24     Titel:
  Antworten mit Zitat      
Hallo denny,

ja, das hatte ich sogar auch schon probiert, allerdings kommt dann

Warning: line XData length (2) and YData length (1) must be equal

Wenn ich dann im Code einfach hinter XData noch nen YData mach, kommt zwar keine Warnung mehr, aber die Linie in der Legende wird nicht kürzer, egal was für Werte ich bei X und YData eingeb... ?!


Ich hab jetzt einfach nur einen Legendeneintrag für ebh gemacht und die Legende wie in dem Link beschrieben auf ne neue Achse kopiert, damit Matlab die Linienlänge beim Speichern als Bitmap nicht wieder ändert.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 20.03.2013, 16:10     Titel:
  Antworten mit Zitat      
Hallo

Hier muss man den Filter noch weiter anpassen

so hat das bei mir funktioniert:
Code:

hp=plot(rand(10,5))
h=legend(hp,{'Linie1','Linie2','Linie3','Linie4','Linie5'},'Location', 'NorthWest')
ch = findall(h,'type','line','LineStyle','-');
set(ch(1),'XData',[0.3 0.4]);
 
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 - 2025 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.