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

Achsenbeschriftung mit Offset

 

orPoG

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2017, 15:53     Titel: Achsenbeschriftung mit Offset
  Antworten mit Zitat      
Hallo Community,

ich bins mal wieder... hoffentlich kann mir jemand bei meinem Problem weiterhelfen:

Ich habe einen Plot, welcher ein Histogramm darstellt, jedoch mit einem bar3 Befehl erstellt wurde, da ich so die Möglichkeit hatte, die Daten noch manuell zu bearbeiten.
Leider geht bei der "Konvertierung" vom Histogramm zum Balkendiagramm die korrekte Achsenbeschriftung verloren. Konkret: wenn ich meine Daten direkt mit hist3 plotte, habe ich beispielsweise auf der x-Achse Werte von -75 bis +45. Wenn ich jedoch die Daten erst zwischenspeichere und dann mit bar3 plotte geht die x-Achse von 0 bis 120. Wie kann ich die Achsen wieder korrekt darstellen? Dabei wäre noch wichtig, dass sich die Beschriftung an der 0 orientiert, also beispielsweise bei 20er-Schritten so beschriftet wird: " -60 -40 -20 0 20 40 "

Ich habe es bereits mit folgendem Code versucht:
Code:
set(gca, 'XTickLabel',x_axis);

wobei x_axis mein Vektor mit Beschriftungszahlen enthält. Jedoch bekomme ich bei diesem Lösungsansatz die Orientierung an der 0 nicht hin.

Im optimalen Fall würde ich gerne die Minimal- und Maximalwerte der Achsen in Variablen abspeichern und dann anhand dieser die Beschriftung machen. Orientiert an der 0.

Ich hoffe, dass mir da jemand weiterhelfen kann. Ich gehe auch davon aus, dass das Problem eigentlich nicht so schwer ist, ich bekomme es aber leider nicht hin Sad

Grüße,
orPoG


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.10.2017, 16:09     Titel:
  Antworten mit Zitat      
Hallo,

was bedeutet denn "Orientierung an der 0"?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
orPoG

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2017, 08:12     Titel:
  Antworten mit Zitat      
Hallo Harald,

mit "Orientierung an der 0" meine ich, dass die Zahl 0 auf jeden Fall an der Achsbeschriftung auftauchen soll. Natürlich an einer definierten stelle.
Wenn ich aktuell mit
Code:
set(gca, 'XTickLabel',x_axis);
arbeite und in x_axis beispielsweise die Zahlen -17 -15 -10 -5 0 5 10 15 stehen, beginnt Matlab ganz links mit der ersten Zahl (-17) und macht dann nach XTicks die zweite. Dabei müsste ja aber dieser Abstand geringer sein, als der in den folgenden Beschriftungsobjekten. Das bekomme ich aber leider nicht hin, sodass die Zahl 0 nicht an der korrekten Stelle steht.

Grüße,
orPoG
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.10.2017, 09:04     Titel:
  Antworten mit Zitat      
Hallo,

du kannst mit
Code:
set(gca, 'XTick', ...)
 
die Positionen der Ticks bestimmen und mit
Code:
set(gca, 'XTickLabel', ...)


Da sich die Position abhängig von der Größe der Figure z.B. auf verschiedenen Bildschirmen ändern kann, würde ich XTickLabels nie alleine setzen, sondern immer auch XTicks.

Grüße,
Harald

Edit: Eigenschaften korrigiert, die 's' waren zu viel.

Zuletzt bearbeitet von Harald am 26.10.2017, 09:38, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
orPoG

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2017, 09:25     Titel:
  Antworten mit Zitat      
Hallo Harald,

herzlichen Dank für deine schnelle und kompetente Antwort!

Ich habe es jetzt so gelöst, wie du beschrieben hast, mit einem winzigen Unterschied:
Ich weiß nicht, ob es an meiner sehr alten Matlab-Version R2010b liegt, aber bei mir ging der XTick-Befehl nur, wenn ich das "s" bei XTicks weg gelassen habe.

Falls jemand über diesen Beitrag stolpern sollte, hier nochmal zur Vollständigkeit mein Code:
Code:
x_ticks = [0 16 36 56 76 96 116 136];
x_axis = [-76 -60 -40 -20 0 20 40 44];
set(gca, 'XTick', x_ticks);
set(gca, 'XTickLabel', x_axis);


Danke für euren (Haralds) Support!
 
orPoG
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 26.10.2017, 09:31     Titel:
  Antworten mit Zitat      
Eine Frage hätte ich aber noch:
Aus Gründen der Übersicht würde ich gerne noch die ersten und letzten Ticks darstellen. Diese werden bei mir aktuell leider nicht dargestellt (-76 und 44).

Gibt es dafür was von Ratiopharm? Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.10.2017, 09:37     Titel:
  Antworten mit Zitat      
Hallo,

nein, die zusätzlichen s haben nichts mit der Version zu tun. In aktuelleren Versionen geht das über Tab-Vervollständigung, deswegen habe ich die Eigenschaften nicht mehr so genau im Kopf Embarassed

Meine Vermutung, was die äußeren Ticks angeht: sie werden nicht angezeigt, weil sie außerhalb des sichtbaren Bereichs liegen. Versuch mal
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
orPoG
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 26.10.2017, 10:25     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe das durch die Verschiebung wie folgt angepasst:
Code:
% xmin = -76; xmax = 44;
xlim([0.5 120.5]);
x_ticks = [0.5 16.5 36.5 56.5 76.5 96.5 116.5 120.5];
x_axis = [-76 -60 -40 -20 0 20 40 44];
 


Letztes Problem beim Beschriften hier ist jetzt, dass wie auf dem Bild gezeigt die unterste Ecke durch die Nähe der beiden Achsbeschriftungen nur eine der beiden angezeigt wird, in dem Fall die -76

Achsenbeschriftung.JPG
 Beschreibung:

Download
 Dateiname:  Achsenbeschriftung.JPG
 Dateigröße:  9.72 KB
 Heruntergeladen:  266 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.10.2017, 10:47     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe nicht.
Kannst du bitte einen größeren Bildausschnitt posten? Oder noch besser Code, mit dem man das reproduzieren kann?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
orPoG
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 26.10.2017, 13:22     Titel:
  Antworten mit Zitat      
Hallo Harald,

einen viel größeren Ausschnitt kann ich leider nicht posten, ebenso wie den gesamten Code... tut mir leid.

Ich habe zum besseren Verständnis mal eingezeichnet, wie es aussehen sollte. Die -25 kommt dann in dem Fall natürlich aus dem
Code:
y_axis = [36 20 0 -20 -25];
set(gca, 'YTickLabel', y_axis);
 


Achsenbeschriftung.JPG
 Beschreibung:

Download
 Dateiname:  Achsenbeschriftung.JPG
 Dateigröße:  11.51 KB
 Heruntergeladen:  264 mal

_________________

Grüße,
orPoG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.10.2017, 13:37     Titel:
  Antworten mit Zitat      
Hallo,

hast du denn auch ylim entsprechend angepasst?

Es ist übrigens nicht nötig, dass du dein tatsächliches Beispiel mit vertraulichen Daten etc. postest. Ein angepasstes Beispiel z.B. mit Zufallszahlen, in dem man die Problematik nachvollziehen kann, reicht vollkommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
orPoG
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 26.10.17
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 26.10.2017, 14:00     Titel:
  Antworten mit Zitat      
Danke für den Hinweis. Ich war mir sicher, dass ich die korrekten Werte verwendet hatte... dem war natürlich nicht so.

Jetzt hat es geklappt.

Herzlichen Dank für deine Hilfe!
_________________

Grüße,
orPoG
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.