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

Hist Achseneinteilung

 

hilby
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 25.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 14:41     Titel: Hist Achseneinteilung
  Antworten mit Zitat      
Hallo!

Ich habe einen Vektor, von dem ich ein Histogramm anfertigen will.

Das Histogramm funktioniert auch. Allerdings hab ich in dem Vektor nur diskrete Werte, zum Beispiel:
Code:
V=[ 1, 5, 5, 1, 10, 70, 72, 730];
hist(V)


Das problem dabei ist, dass er mir einen stetigen Zahlenstrahl von 1 bis 730 anzeigt. Man kann das garnichtmehr erkennen soweit liegen die 1 und die 730 auseinander. Außerdem fasst er die kleineren Zahlen zu einem Balken zusammen. Gibt es eine möglichkeit dort eine unstetige Achseneinteilung zu haben? Die Zahlen quasi als Zustände zu betrachten? Ziel wäre dann einfach dass er bei 1 einen Balken hat der 2 hoch ist, bei 5 auch 2 hoch, bei 10 1 hoch etc....

Außerdem hätte ich links und rechts von dem Diagramm gerne etwas Abstand zur y-Achse. Der erste Balken beginnt quasi direkt an der y Achse.

Zur y Achse parallele Gitternetzlinien wären auch ziemlich gut. Kann mir vielleicht jemand sagen wie ich die einfügen kann? (=> nach den Gitternetzlinien werd ich auch nochmal googeln. nur zu dem anderen Problem hab ich nichts gefunden...)[/code]
Private Nachricht senden Benutzer-Profile anzeigen


Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 25.06.2010, 16:03     Titel:
  Antworten mit Zitat      
Hallo,

so vielleicht?
Code:

V=[ 1, 5, 5, 1, 10, 70, 72, 730];
hist(V,unique(V))
 


gitterlinien versuchs dann mal so: ich kanns gerade nicht testen:
Code:

V=[ 1, 5, 5, 1, 10, 70, 72, 730];
hist(V,unique(V))
set(gca,'Xgrid','on')
 


gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 25.06.2010, 17:21     Titel:
  Antworten mit Zitat      
Ich würde aufbauend auf Fouriers Beispiel sowas vorschlagen:

Code:

V=[ 1, 5, 5, 1, 10, 70, 72, 730];
[A,N]=hist(V,unique(V));
figure(1)
bar(A)
set(gca,'XTickLabel',N)
 

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 25.06.2010, 17:50     Titel:
  Antworten mit Zitat      
Maddy hat Folgendes geschrieben:
Ich würde aufbauend auf Fouriers Beispiel sowas vorschlagen:

Code:

V=[ 1, 5, 5, 1, 10, 70, 72, 730];
[A,N]=hist(V,unique(V));
figure(1)
bar(A)
set(gca,'XTickLabel',N)
 


Perfect Smile
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
hilby
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 25.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 19:19     Titel:
  Antworten mit Zitat      
Ich kann es leider erst testen wenn ich am Montag wieder auf der Arbeit bin, ich werds dann ausprobieren und nochmal ein feedback geben. Danke schonmal für die Antworten!

Lieben Gruß,
Hilby
Private Nachricht senden Benutzer-Profile anzeigen
 
hilby
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 25.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 10:44     Titel:
  Antworten mit Zitat      
Ich hab das nun getestet. Das funktioniert bisher sehr gut. Allerdings habe ich 10000 Datensätze. Wenn ich dann mit unique arbeite, dann bekomme ich immer noch ca 5000 ticks. Kann ich nicht einige von den Ticks zusammenfassen, zum beispiel dass alles im Bereich zwischen 50 und 75 zusammgefasst wird in eine Gruppe?

Beispiel:
Code:

V=[ 1,2,7,15, 55, 75, 77, 65, 77, 2, 89, 1, 55, 70, 25, 33, 5, 5, 1, 10, 70, 72];
[A,N]=hist(V,unique(V));
bar(A)
set(gca,'XTickLabel',N)
 


Schön wäre es wenn ich nur 4 Balken hätte, von 0 bis 25, 26 bis 50, 51 bis 75 und 76 bis 100. Möglich wäre dann ja das zusammenfassen aller zahlen die zwischen 0 und 25 liegen und den Wert durch 12,5 zu ersetzen. Das wäre allerdings ziemlich unschön. gibt es nicht noch ne andere möglichkeit?

Die Histfunktion macht das ja ansich auch, nur dann halt die Zahlen kontinuierlich angezeigt.

Gruß, Hilby
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 28.06.2010, 11:01     Titel:
  Antworten mit Zitat      
Ich vermute mal, das hast du bereits versucht?

Code:
hist(V,12.5+[0:3]*25)


Und das einzige Problem ist nun, dass du möchtest das die x-Achse eben nur die Zentren der Bins anzeigt?

Also sowas in die Richtung:

Code:

V=[ 1,2,7,15, 55, 75, 77, 65, 77, 2, 89, 1, 55, 70, 25, 33, 5, 5, 1, 10, 70, 72];
N=[12.5:25:100];
hist(V,N)
set(gca,'XTick',N);
set(gca,'XTicklabel',N); % natürlich ist jede andere Beschriftung auch möglich

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
hilby
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 25.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 11:10     Titel:
  Antworten mit Zitat      
Nicht ganz, das Problem ist, dass es sich hierbei um eine ziemliche Vereinfachung handelt. Ich habe einen Vektor der sehr viele Zahlen enthält. Wenn ich nun Zahlen zwischen 1 und 50000 habe, aber im Bereich zwischen 20000 und 40000 keine Zahlen sind, dann soll er dort natürlich auch keinen Zahlenstrahl anzeigen, weil man sonst nichts mehr erkennt. Wenn ich nun die Möglichkeit mit unique probiere, dann habe ich auf einmal 5000 Ticks an meiner x achse. Wenn ich nur die hist Funktion benutze, dann fasst er die Zahlen im Bereich von 0-10000 zusammen, die Zahlen von 0-20000, dann ne breite Lücke, dann die Zahlen von 40000-50000. Dass er die Zahlen so zusammenfasst ist ja ansich ganz gut, nur er soll da nicht ne ewigbreite Lücke zwischen lassen.

Zusätzlich könnten die Zahlen im Bereich von 0-20000 etwas schmaler zusammengefasst werden, etwa in Intervallen von 5000er Schritten.

Gruß, Hilby
Private Nachricht senden Benutzer-Profile anzeigen
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 28.06.2010, 11:21     Titel:
  Antworten mit Zitat      
und wie siehts aus mit 2 mal plotten?

Code:

A=rand(1,1000)*20000;
B=rand(1,1000)*10000+40000;
figure
subplot(1,2,1)
hist(A,4)
subplot(1,2,2)
hist(B,4)
 


Ansonsten musst du dir halt über die hist-funktion die entsprechenden Werte berechnen lassen und dann die x-achse ganz angepasst mit der bar-funktion plotten.
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
hilby
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 25.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 11:28     Titel:
  Antworten mit Zitat      
Ich werd es versuchen, falls noch Jemand ne andere Idee hat immer her damit.

Danke erstmal für die zahlreichen Antworten!

Gruß, Hilby
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.