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

plot (nicht plotyy) mit zweiter Achsenbeschriftung?

 

SteffenS.
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 08:11     Titel: plot (nicht plotyy) mit zweiter Achsenbeschriftung?
  Antworten mit Zitat      
Guten Morgen zusammen,

ich frage mich gerade ob Folgendes möglich ist:
Ich habe Daten geplottet, bei der zum Einen der Absolutwert, zum anderen aber auch die prozentuale Veränderung bezogen auf den Startwert interessant ist. Rein von den Kurven her verändert sich hierdurch nichts, nur die Beschriftung der Y-Achse. Ideal für mich wäre nun, wenn ich einfach die Y-Achse des Plots links mit den Absolutwerten und rechts mit den entsprechenden %ten beschriften könnte.

Hat jemand sowas schonmal versucht?

Grüße
Steffen
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

die MATLAB-Funktion pareto macht etwas ähnliches. Vielleicht kannst du dich daran orientieren.
Code:

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

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 09:19     Titel:
  Antworten mit Zitat      
ich würde plotyy dazu missbrauchen

Code:

ax = plotyy(1:10,exp(1:10),1:10,exp(1:10))
set(ax(2),'YTickLabel',str2num(get(ax(1),'YTickLabel'))/100)
set(ax(1),'YColor','k')
set(ax(2),'YColor','k')
 


viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
SteffenS.
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 10:02     Titel:
  Antworten mit Zitat      
Grüßt euch,

danke erstmal. Klar, plotyy wäre die funktionierende Holzhammermethode, bei der Art und Weise wie ich die Daten / Plots erzeuge irgendwie aber umständlich, ich hatte gehofft, dass es einfacher geht.

Wie mir pareto helfen soll, habe ich noch nicht ganz verstanden?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
SteffenS.
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 11:09     Titel:
  Antworten mit Zitat      
So langsam habe ich gerafft, wie pareto mir helfen soll Wink Auf die Reihe bekommen hab ichs aber noch nicht :

Code:
clear, close all
clc
x = linspace(1,10,1000);
y = -rand(1)*sin(rand(1)*x)+cos(rand(1)*2*x);
%meine Daten sind alle Positiv
mini = min(y);
y = y+abs(mini);
first = y(1);
f1=figure
hold all
plot(x,y)
grid on
ticks_l = get(gca,'YTick');
%prozentuale Abweichung zu den Ticks --> diese sollen dann die Ticks rechts
%werden
delta_tick = ticks_l-first;
ticks_r = 100/first*delta_tick;


pos = get(f1,'Position')
lim_links = axis;
xlim_l = lim_links([1,2]);
ylim_l = lim_links([3,4]);
raxis = axes('Position',get(f1,'Position'),'Color','none',...
    'XGrid','off','YGrid','off','YAxisLocation','right',...
    'XLim',xlim_l,'XLim',ylim_l','Parent',f1,'Visible','on')

set(raxis,'YTick',ticks_l,'YTickLabel',num2str(ticks_r),'XTick',[])
 


ich erzeuge irgendwelche Daten und plotte diese. Lese die Limits etc. aus, berechne die neuen YTicks für die rechte Beschriftung, erzeuge ein axes Objekt (wie es auch in pareto gemacht wird)
so
und no? Question Shocked
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das Problem lag in den letzten beiden Befehlen:

Code:
raxis = axes('Position',get(gca,'Position'),'Color','none',...
    'XGrid','off','YGrid','off','YAxisLocation','right',...
    'XLim',xlim_l,'YLim',ylim_l','Parent',f1,'Visible','on')

set(raxis,'YTick',ticks_l,'YTickLabel',num2str(ticks_r', '%.2f'),'XTick',[])

- die Positionierung muss dem 1. Koordinatensystem folgen, nicht der Figure.
- das zweite XLim musste ein YLim sein
- für num2str ist ein Spaltenvektor ratsam.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
SteffenS.
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 14:42     Titel:
  Antworten mit Zitat      
Mein Held =)

das mit dem zweiten Xlim war natürlich schlichtweg ein Flüchtigkeitsfehler... was macht das .%2f bei den Ticks?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

stellt das Format der Zahlen ein.
Standardmäßig werden (zu?) viele Nachkommastellen angezeigt - du kannst es ja mal ausprobieren, indem du das weglässt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
SteffenS.
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 15:02     Titel:
  Antworten mit Zitat      
So, Problem 1 gelöst, Problem 2 damit aufgemacht Very Happy

Meine Legende ist von der Location her oben rechts außen und überschneidet sich nun mit der rechten Achsenbeschriftung. Wenn ich die Legende statt über Location mittels Position platziere, wird die weiße Zeichenfläche des Plots größer, quasi auf die Größe, die sie hätte, wenn die Legende innen wäre. Das will ich aber natürlich nciht.



eigentlich sollte das ja über Position geregelt werden können, oder? allerdings verändert sich bei mir über position die Größe des gesamten Fensters...

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

Forum-Meister


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

versuchs mal so:

1. erstes Koordinatensystem und plot
2. Legende
3. Position des ersten KS wie gewünscht anpassen
Code:
set(gca, 'Position', [left lower width height])
4. zweites Koordinatensystem wie gehabt.

Zur interaktiven Anpassung kannst du auch die Plot Tools verwenden (in der Figure Toolbar der Button ganz rechts).

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.07.2014, 23:15     Titel: Zoom funktioniert so nicht
  Antworten mit Zitat      
Ich habe eben versucht, mit diesem Code die rechte Achse zusätzlich zu beschriften. Was mir aufgefallen ist:

1) Der Plot lässt sich nicht mehr zoomen.
2) Bei einer Änderung der Größe des Plots (z.B. Fenster maximieren) verschiebt sich die rechte Achse, sodass sie nicht mehr zur linken passt.

Weiß jemand, wie man diesen Mangel beheben kann?
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.07.2014, 20:31     Titel: Re: Zoom funktioniert so nicht
  Antworten mit Zitat      
Hallo corvus_maximus,

Bitte poste den Code, der es erlaubt das Verhalten zu reproduzieren.

Zu 2): Füge in die ResizeFcn des Fensters die benötigten Anpassungen ein.

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.