Verfasst am: 07.11.2011, 11:31
Titel: contour label - position des textes mittig auf x-achse
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.
Verfasst am: 07.11.2011, 13:18
Titel: Re: contour label - position des textes mittig auf x-achse
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.
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.
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.
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.
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.
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
Einstellungen und Berechtigungen
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
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.