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

Bar, zweite Y-Achse (rechts) einfügen

 

derbeshot89
Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 14.05.13
Wohnort: Hamburg
Version: 7.5.0 (R2007b)
     Beitrag Verfasst am: 10.07.2013, 11:44     Titel: Bar, zweite Y-Achse (rechts) einfügen
  Antworten mit Zitat      
Guten Tag gomatlab-Community,

ich habe ein Problem beim Einfügen einer zweiten Y-Achse und hoffe, dass ihr mir helfen könnt.

Ich habe mein Problem sehr einfach dargestellt und eigentlich klappt alles auf den ersten Blick auch wunderbar. Zwei Y-Achsen werden erstellt, so wie ich es haben möchte:

Code:


quantity = [3; 5; 10; 2; 7];     % Anzahl
property = {'Auto';'Maschine';'CD';'Fernseher';'Laptop'};   % Eigentum
table_to_plot = [property,num2cell(quantity)];              % Tabelle mit Eigentum und dazugehörige Anzahl

[A, Idx] = sort([table_to_plot{:,2}]);                      % sortieren der Tabelle nach der Größe
sortedTable = table_to_plot(Idx, :);

len = length(property);

barh(cell2mat(sortedTable(:,2)));                            % plotten der sortierten Tabelle
xlabel('Quantity');
ylabel('Property');
set(gca,'YTickLabel',sortedTable,'YTick',1:len);   % Y-Achsenbeschriftung definieren

%%%%% nun soll eine zweite Y-Achse definiert werden (rechts)

prct_calc = sortedTable(:,2);                      % Berechnung der Prozentzahl ausgehend vom Maximalwert
max_value = max(cell2mat(prct_calc));
[ax,bx] = size(sortedTable(:,2));

for s = 1:ax
   prct = (cell2mat(prct_calc(s))/max_value)*100;
   prct_tbl{s}=prct;
end

h1 = gca;                                                                           % Zweiten Plot erstellen, um eine Y-Achse rechts zu realiseren
h2 = axes('Position',get(h1,'Position'));                                           % übernehme Position des ersten Plots
barh(cell2mat(sortedTable(:,2)));                                                   % Plotte exakt das selbe wie im ersten Plot
set(h2,'YAxisLocation','right','Color','none','YTickLabel',prct_tbl,'YTick',1:ax)   % setze Prozentzahlen als zweite Y-Achse rechts
ylabel('Percent');
set(h2,'XLim',get(h1,'XLim'),'Layer','top');

 


DAS PROBLEM:

Es ensteht eine Figure genau so, wie es auszusehen hat. Wenn ich aber Reinzoomen oder Rauszoomen möchte bzw. Rotieren möchte, dann haut es mir die beiden Plots, die ich übereinander erstellt habe, durcheinander.

Deshalb die Frage:

Gibt es eine Möglichkeit, die beiden Plots, die ich übereinander gesetzt habe um eine zweite Y-Achse rechts zu definieren, zu fixieren oder zu verbinden oder so, so dass es nur noch ein Plot ist???

Oder gibt es gar eine viel einfachere Methode, eine zweite Y-Achse zu setzen, so dass die Idee mit dem zweiten Plot sinnlos ist??

Ich hoffe ihr versteht das Problem und könnt mir helfen. Ich danke euch vielmals Wink

Gruß,

Fatih Uysal
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.