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

x-Achsenskalierung nicht korrekt -->mehrere plots (hold o

 

joeyy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2014, 12:09     Titel: x-Achsenskalierung nicht korrekt -->mehrere plots (hold o
  Antworten mit Zitat      
Hallo,

wenn ich mein Skript zum Plotten ausführe,


Code:
% x-Achse: Uhrzeit
% y-Achse: Kraft


a= 24 *60/10;
b= 60/10; % Soviel Messungen pro Stunde

t = 0:1/(b*24):1-1/(24*a); % Zeitvektor als x-Achsen-Skala (0 bis 24 Uhr)
bar(t, L', 'stack')
datetick
set(gca, 'XLim', [0,1], 'FontSize',16);
xlabel('Uhrzeit');
ylabel('Kraft');


% Weiterer Plot
hold on
stairs(t, P,  'Color','k', 'LineWidth',1.5)
datetick
set(gca, 'XLim', [0,1]);


% Weiterer Plot
hold on
stairs(t, K,  'Color','r', 'LineWidth',1.5)
datetick
set(gca, 'XLim', [0,1]);


dann stimmt die x-Achsenskalierung nicht. Erst durch ein weiteren Befehl:

Code:

datetick
set(gca, 'XLim', [0,1]);


stimmt die x-Achsenskalierung. Dabei MUSS ich mein Plot Fenster aber GEÖFFNET haben, andernsfalls funktioniert es nicht !!!

Kann mir jemand sagen woran das liegt?

Danke!!


Harald
Forum-Meister

Forum-Meister


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

Vermutung: datetick passt die Achsenskalierung an und der set-Befehl passt das dann ungünstig an.

Probier bitte mal:
Code:
set(gca, 'XLim', [0,1], 'FontSize',16);
datetick ('x', 'keeplimits')


Das sollte dann auch nur einmal aufgerufen werden müssen, da es sich ja auf das gesamte Koordinatensystem bezieht.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2014, 13:16     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich hab jetzt rausgefunden, dass sowohl dein Vorschlag als auch mein Vorschlag funktionieren. Das Problem war nur, dass ich ursprünglich für 'FontSize' die Größe 20 eingestellt hab. Bei Schriftgröße 16 hingegen funktioniert es. Weißt du warum das so ist?

btw: Wie Kann ich hier eine zweite y-Achse für "P" einfügen?

Danke
 
Harald
Forum-Meister

Forum-Meister


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

Vermutung: set macht einmal eine Anpassung, einmal nicht. Du kannst das ja im Debugging-Modus durchtesten. Funktioniert mein Vorschlag auch für Schriftgröße 20?

Zweite y-Achse: plotyy (dann wirds aber mit stairs schwierig) oder mit axes ein zweites Koordinatensystem dahinterlegen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2014, 20:00     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Rückmeldung.
Das mit der Schriftgröße werde ich morgen versuchen.


Könntest du mir bitte sagen, wie ich das mit de rzweiten y-Achse genau machen kann, wenn ich die figure schon abgespeichert hab? Es reicht auch vollkommen wenn ich es manuell machen könnte.

Vielen Dank!
 
Harald
Forum-Meister

Forum-Meister


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

axes, und dann die Eigenschaften wie 'YAxisLocation' anpassen.
Auch die parent-Eigenschaften der Stairsobjekte ggf. anpassen.
Das ist halt ein Gepfriemel, aber ich kenne keine andere Möglichkeit.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2014, 23:45     Titel:
  Antworten mit Zitat      
Hmmm
Sorry, dass ich mich so anstelle, aber wenn ich meine figure öffne und dann anschließend "axes" ausführe, taucht zwar eine zweite x-Achse und y-Achse auf. Gleichzeitig wird aber mein ursprünglicher Plot überdeckt.

Wie kann ich die Überdeckung verhindern, aber die neue Achse beibehalten?

Die Funktion parent hab ich nicht (manuell) gefunden.

btw: Die rechte y-Achse ist für die stairs-Kurve "P" gedacht.
 
Harald
Forum-Meister

Forum-Meister


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

parent ist keine Funktion, sondern eine Eigenschaft.
Unter "manuell" habe ich verstanden, dass du Plot Tools nutzt.

Hier ein Minimalbeispiel:
Code:
%% Ausgangslage
ax1 = axes;
p1 = plot(ax1, 1:10, rand(10,1));
hold on
p2 = stairs(ax1, 1:10, 10*rand(10,1), 'g')
hold off
%% Anpassung
ax2 = axes('YAxisLocation', 'right', 'XTick', [], ...
    'Color', 'none', 'YColor', 'g','Box','off');
set(p2, 'parent', ax2)


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2014, 23:02     Titel:
  Antworten mit Zitat      
Sorry, ich meinte auch Eigenschaften. Trotzdem habe ich 'parent' manuell nicht unter property gefunden. Zumindest habe ich jetzt keine Überdekcung..Das reicht mir schon Wink

Zitat:
Vermutung: set macht einmal eine Anpassung, einmal nicht. Du kannst das ja im Debugging-Modus durchtesten. Funktioniert mein Vorschlag auch für Schriftgröße 20?

Nein, bei Schriftgröße 20 funktioniert dein Vorschlag auch nicht. Macht aber nichts, dann benutze ich einfach Schriftgröße 16.

Danke
 
joeyy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2014, 10:41     Titel:
  Antworten mit Zitat      
Noch eine kurze Frage.

Ich hab mit
Code:
ein Gitter zeugt.

Momentan ist meine x-Achse alle 3-Stunden skaliert --> 00:00 Uhr, 03:00 Uhr, 06:00 Uhr usw.

Folglich hat auch mein erzeugtes Gitter eine Maschenweite von 3 Stunden.
Wie kann ich einstellen, dass mein Gitter eine Maschenweite von nur 1 Stunde hat?
Die x-Achse kann weiterhin in 3-Stunden-Schritten skaliert sein, weil sonst wird das evtl. zu unübersichtlich.

Mit
Code:
war es leider zu kurzmaschig. Auch mit 'XTick' hab ich es leider nicht geschafft, da meine X-tick-locations und meine X-tick-labels ja nicht identisch sind.

Hättest Du dafür auch einen Vorschlag?
Vielen Dank
 
joeyy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2014, 18:11     Titel:
  Antworten mit Zitat      
Kann mir niemand weiterhelfen? Sad
Es ist etwas dringender.
 
Harald
Forum-Meister

Forum-Meister


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

eine Möglichkeit ist, die nicht benötigten Beschriftungen "händisch" zu löschen.
Code:

plot(0:24, rand(1,25));
set(gca, 'XTick', 0:24)
l = cellstr(get(gca, 'XTickLabel'));
l([2:3:end, 3:3:end]) = {''};
set(gca, 'XTickLabel', l)


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