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

contour label - position des textes mittig auf x-achse

 

pospiech
Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2011, 11:31     Titel: contour label - position des textes mittig auf x-achse
  Antworten mit Zitat      
Ich habe einen pcolor plot in den ich mit contour linien einzeichne und mit clabel mit Text versehe. Allerdings gefällt mir die Positionierung des Textes nicht, weiß aber auch nicht wie ich es ändern soll.

Hier mein Code
Code:

colorDepth = 1000;
colormap(jet(colorDepth));

hold on;
hplot = pcolor(xAxis, yAxis, Data2D);
shading flat; % do not interpolate pixels

zmin = floor(min(Data2D(:)));
zmax = ceil(max(Data2D(:)));
zinc = (zmax - zmin) / 40;
zlevs = 0:10:zmax;

[C,hfigc] = contour(xAxis,yAxis,Data2D,zlevs);
set(hfigc, ...
    'LineWidth',1.0, ...
    'Color', [1 1 1]);

set(hfigc, ...
    'ShowText','on', ...
    'TextStep',get(hfigc,'LevelStep')*2 );

hcollab = clabel(C,hfigc,'LabelSpacing',200);

set(hcollab, ...
    'BackgroundColor',[.99 .99 .99], ...
    'Edgecolor',[1 1 1], ...
    'FontSize',FontSize, ...
    'FontName', FontName, ...
    'Color',[0 0 0], ...
    'Rotation',0, ...
    'HorizontalAlignment','center', ...
    'Margin',2)

hold off;
 
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.11.2011, 13:18     Titel: Re: contour label - position des textes mittig auf x-achse
  Antworten mit Zitat      
Hallo pospiech,

Wir können Deinen Code nicht laufen lassen, weil einige Variablen nicht definiert sind. Wird können auch Dein Bild nicht sehen. Um einen Verbesserungsvorschlag machen zu können, müssten wir aber mindestens den Ist-Zustand kennen. Noch besser wäre es, wenn Du auch den Soll-Zustand geeignet erklärst.

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2011, 13:26     Titel:
  Antworten mit Zitat      
Ich habe ein Bild angehangen, was mit dem obigen Code erstellt wurde.

Die Beschriftung ist (eher zufällig) rechts am Rand. Ich möchte die Position aber bestimmen können.

output-vs-pump-signal.png
 Beschreibung:

Download
 Dateiname:  output-vs-pump-signal.png
 Dateigröße:  64.62 KB
 Heruntergeladen:  921 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.11.2011, 16:05     Titel:
  Antworten mit Zitat      
Hallo pospiech,

Gut. Jetzt ist mir der Ist-Zustand klar. Wie möchtest Du nun die Positionen bestimmen? Per Maus oder als Programm? Ersteres sollte mit dem 'manual'-Flag in CLABEL funcktionieren, für letzteres würd ich versuchen die Handles als Outputs aus CLABEL zu erhalten, so dass Du die 'Position' frei setzen kannst.

Du könntest übrigens auch selbst TEXT-Objekte in das Bild zeichnen.

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2011, 16:18     Titel:
  Antworten mit Zitat      
Ich möchte es mit code setzen (die GUI nutze ich für Plots nie).
Und manuell im Code anpassen möchte ich es auch nicht.
Ich möchte es z.B. bei 1/3 der x-achse stehen haben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.11.2011, 18:56     Titel:
  Antworten mit Zitat      
Hallo pospiech,

Dann hast Du also schonmal den X-Wert. Du brauchst also noch den zugehörigen Y-Wert, um die Labels zu setzen.

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2011, 18:58     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo pospiech,

Dann hast Du also schonmal den X-Wert. Du brauchst also noch den zugehörigen Y-Wert, um die Labels zu setzen.

Ich habe weder noch. Und falls doch, weiß ich nicht was du meist.

Ich möchte das der Text nur einmal pro Linie gesetzt wird. Leider macht Matlab die Texte nach seinem eigenen Alg ein bis mehrfach. Und die automatischen Positionen überlappen sich auch meist noch.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.11.2011, 22:32     Titel:
  Antworten mit Zitat      
Hallo pospiech,

Was bedeutet "Ich möchte es z.B. bei 1/3 der x-achse stehen haben"?
Dann hast Du ja noch die Werte der Linien, oder? Damit müsstest Du in der Lage sein, die Y-Werte zu finden, die zu 1/3 der X-Achse gehören.

Die Abstände zwischen den Labels kannst Du über den Parameter 'LabelSpacing' beeinflussen. Du kannst auch in clabel.m suchen, ob Du andere Parameter so anpassen kannst, dass es Deinen Bedürfnissen näher kommt.

Hast Du schonmal in den FileExchange-Seiten gesucht? Dies könnte praktisch sein:
http://www.mathworks.com/matlabcentral/fileexchange/9028-gclabel

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

Forum-Century

Forum-Century


Beiträge: 130
Anmeldedatum: 03.09.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2011, 23:49     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:

Die Abstände zwischen den Labels kannst Du über den Parameter 'LabelSpacing' beeinflussen.

Einen Abstand von Unendliche kann ich aber nicht einstellen. Ich möchte ja nur genau _ein_ clabel haben und nicht in regelmäßigen Abständen.

Jan S hat Folgendes geschrieben:

Du kannst auch in clabel.m suchen, ob Du andere Parameter so anpassen kannst, dass es Deinen Bedürfnissen näher kommt.

welchen habe ich im Beispiel vergessen?

Jan S hat Folgendes geschrieben:

Hast Du schonmal in den FileExchange-Seiten gesucht? Dies könnte praktisch sein:
http://www.mathworks.com/matlabcentral/fileexchange/9028-gclabel

Ist leider dafür gedacht mit der GUI bedient zu werden. Ich muss die Bilder aber automatisiert erstellen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.11.2011, 00:50     Titel:
  Antworten mit Zitat      
Hallo pospiech,

Ich konnte in den Beispielen in "help clabel" mit einem hohen Wert für 'LabelSpacing' erreichen, dass nur ein Label pro Linie zu sehen ist. Das könnte bei Dir auch funktionieren.

Du hast den Source-Code von Matlab's clabel.m und von gclabel.m aus der FEX. m_clabel.m hast Du inzwischen vielleicht ja auch in der FEX gefunden.

Wie schon gesagt kannst Du die Labels auch per TEXT an die gewünschten Stellen zu setzen. Das funktioniert natürlich auch automatisch, da Du die Koordinaten ja bereits für das Zeichnen des Contour-Plots zur Verfügung hast. Ich schätze die benötigte Funktion benötigt weniger als 20 Zeilen.

Damit hast Du meiner Ansicht nach alles zur Verfügung, um Dein Problem lösen zu können.

Gruß, Jan
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.