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

Wie zeige ich Barwert oberhalb des Bars an?

 

clustering_n00b
Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 14.03.2012, 22:39     Titel: Wie zeige ich Barwert oberhalb des Bars an?
  Antworten mit Zitat      
Hi again Very Happy


Ich habe nun ein Barplot erstellt. Nun möchte ich (ähnlich wie in MS Excel) kurz oberhalb jedes Bars auch den EXAKTEN Wert anzeigen.

Geht das - und wenn ja, wie denn?

Code:
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

sicher geht das, und wie von dir vermutet mit text. Das einzige Problem ist die richtige Positionierung. So siehts ganz gut aus:

Code:
x = 1:10;
y = x.^2;
bar(x,y)
offset = diff(ylim())/50;
for I=1:numel(x)
    t = text(x(I), y(I) + offset, num2str(y(I)),...
        'HorizontalAlignment', 'center');
end


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

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 15.03.2012, 10:36     Titel:
  Antworten mit Zitat      
Hi Harald!


Das hat perfekt funktioniert - jetzt muss ich's nur noch verstehen Razz

Du bist der absolute MATLAB-Pro - vielen Dank! Laughing
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Kurzerklärung:

text(x,y, 'text') positioniert 'text' an die Stelle (x,y) im Koordinatensystem.

Die Stelle ist an sich [ x(I), y(I) ], aber dann wird das direkt an den Balken hingeklatscht, deswegen ein kleiner Offset nach oben (1/50 der Höhe des Koordinatensystems).

Normalerweise ist der Text linksbündig ausgerichtet, was dann etwas verschoben aussieht, deswegen noch
... 'HorizontalAlignment', 'center');

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

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 15.03.2012, 11:53     Titel:
  Antworten mit Zitat      
Hi!


Ja, ich glaube es dämmt mir langsam ein.

Kann man mit dieser Schreibweise auch jeder Bar eine andere Farbe zuteilen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

die Farbe ist erstmal für alle bars gleich.

Wenn du verschiedene Farben haben möchtest, kannst du z.B. in einer for-Schleife verschiedene bar-Plots erzeugen und dort die Farbe angeben.
Dabei dann "hold on" nicht vergessen...

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

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 15.03.2012, 12:17     Titel:
  Antworten mit Zitat      
Aber dann ich kann die XTickLabels nicht mehr beschriften?


Code:

    % Draw Bar
    x = 1:bins;
    y = number;
   
    for i = 1:length(number)
       
        if i > 5
          bar(x(i), y(i), 'r')
        else
          bar(x(i), y(i), 'b')      
        end
       
        hold on;
        set(gca,'fontsize', 18);

        if i == 1
           set(gca,'XTickLabel','[ 0 - 100 [')
        elseif i == 2
           set(gca,'XTickLabel','[ 100 - 200 [')
        elseif i == 3
            set(gca,'XTickLabel','[ 200 - 300 [')
        elseif i == 4
            set(gca,'XTickLabel','[ 300 - 400 [')
        elseif i == 5
            set(gca,'XTickLabel','[ 400 - 500 [')
        elseif i == 6
            set(gca,'XTickLabel','[ 500 - 600 [')
        end
               
     end
 


Jetzt wird nur noch der letzte Label '[ 500 - 600 [' auf der x-Achse angezeigt und sonst nichts.
Die Farben sind auch alle blau Sad


Was mache ich falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

was sind bins und number?

Deine Verwendung von XTickLabel macht so oder so keinen Sinn. Was willst du damit erreichen?

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

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 15.03.2012, 12:27     Titel:
  Antworten mit Zitat      
Also bins = Anzahl Bins (= 6)
numbers = y-Vektor für die Bars


Ich möchte für jede Bar (aus insgesamt 6) den XTickLabel-Wert selber bestimmen (nicht einfach 1, 2, ....)


Für die letzten zwei Bins (i = 5, 6) soll die Farbe ausserdem noch rot sein.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Code:
x = 1:6;
y = x;

for i = 1:length(x)
   
    if i >= 5
        bar(x(i), y(i), 'r')
    else
        bar(x(i), y(i), 'b')
    end
   
    hold on;
    set(gca,'fontsize', 16);
   
end
set(gca, 'XTick', 1:6)
set(gca,'XTickLabel',...
        {'[ 0 - 100 [', '[ 100 - 200 [','[ 200 - 300 [','[ 300 - 400 [','[ 400 - 500 [','[ 500 - 600 ['})
Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 15.03.2012, 12:51     Titel:
  Antworten mit Zitat      
Nun hat's funktioniert - DANKE! Smile


Also muss man für gca und XTick explizit den Range 1:6 angeben - ok.

Aber wenn ich nun
Code:
set(gca,'fontsize', 16);
aus der innere for-Schleife nehme und neben vor der XTick-Aufstellung hinstelle, wird der Fontsize für alle Ticks übernommen, ohne explizit 1:6 anzugeben.

So geht's:
Code:

    set(gca,'fontsize', 18);
    set(gca, 'XTick', 1:bins)
    set(gca,'XTickLabel',...
        {'[ 0 - 100 [', '[ 100 - 200 [','[ 200 - 300 [','[ 300 - 400 [','[ 400 - 500 [','[ 500 - 600 ['})
 


Strange? Question
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 19.03.2012, 09:29     Titel:
  Antworten mit Zitat      
Ich würde diesen Thread gerne wieder zum Leben erwecken Smile


Und zwar möchte ich nun jede Bar in zwei Teilstücke aufteilen und die verschiedenfarbig anmalen.
Z.B. soll eine Bar die den Wert 65 anzeigt blau sein. Die oberen 5 Werte (Recheck) sollen mit einer anderen Farbe (rot) markiert werden.

Wie kann man denn diese fancy Idee umsetzen? Eventuell mit 2 Bars nacheinander plotten wobei die hintere transparent ist in der Schnittregion?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 19.03.2012, 09:52     Titel:
  Antworten mit Zitat      
Code:
bar(matrix,'stacked')
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 19.03.2012, 10:53     Titel:
  Antworten mit Zitat      
Hi Winkow!


Hat wunderbar geklappt - danke dir! Very Happy
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.