|
|
Balkendiagramm Breite programmieren...HILFE |
|
mahi_mahi |

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 11:17
Titel: Balkendiagramm Breite programmieren...HILFE
|
 |
Hi Leute,
ich versuche ein Balkendiagramm zu erstellen, worin ich die Ergebnisse von verschiedenen Studien wiedergebe. Ich möchte, dass die Studien mit den meist befragten Patienten durch einen breiteren Balken erkennbar werden.
Habe als Beispiel schonmal ein Balkendiagramm erstellt, worin man die Prozentzahlen der jeweiligen Antworten erkennt. Nun soll aber ein dritter Vektor z mit berücksichtigt werden, der die Anzahl der Teilnehmer an der jeweiligen Studie wiedergibt.
x=(1:6)
y=[70 20 10;30 40 30;93 2 5; 65 25 10; 20 50 30;88 2 10]
barh(x,y,'stacked')
z=[33 545 200 300 64 888]
Ich wäre euch seehr dankbar, wenn ihr mir da weiterhelfen könntet. Habe leider noch nie ein Balkendiagramm selbst programmiert.
Mahi
|
|
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 11:24
Titel:
|
 |
Hi,
es gibt ein Parameter um die Balkenbreite zu verändern:
Zitat: |
bar(...,width) sets the relative
bar width and controls the separation of bars within a group. The default width is 0.8,
so if you do not specify x, the bars within a group have
a slight separation. If width is 1,
the bars within a group touch one another. |
der gilt jedoch für alle geplotteten Balken. Das heißt du musst jeden Balken in einem eigenen plot erstellen, und diese mit hold on überlagern:
Das lässt sich dann entsprechend in einer Schleife automatisieren.
Gruß Jan
|
|
|
mahi_mahi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 11:28
Titel:
|
 |
hey,
danke für die schnelle Antwort. Könntest du mir vielleicht für mein Beispiel einen Ansatz geben? Habe einfach keinen Plan...
Gruß,
Mahi
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 11:55
Titel:
|
 |
Hi,
mit stacked graph geht das nur mit trick17, weil man hier 'eigentlich' keinen Balken alleine zeichnen kann. Daher ist das etwas unelegant, geht aber so weit:
Gruß Jan
|
|
|
mahi_mahi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 11:58
Titel:
|
 |
wow.. das sieht ja richtig gut aus! Wenn du mir nur noch sagen könntest, was wofür steht...
danke!!!!!!!!
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 12:11
Titel:
|
 |
Es sieht deshalb etwas chaotisch aus, weil man jedes Mal mindestens zwei Balkenreihen zeichnen muss. Der Bar graph setzt die Achsenbeschriftung aber nur da korrekt, wo im ersten Plot Balken gezeichnet werden. Deshalb lasse ich in jedem Schleifendurchlauf 6 Balken malen, wobei davon 5 Stück leer sind, dafür sind die zeros da. So kann man sich das nachträgliche hinzufügen der xticks sparen. Vor dem stacked wird die jeweilige Balkenbreite übergeben, die auf das Maximum von z normiert werden muss, damit die Balken nicht breiter als 1 werden. Wenn sie dir zu schmal sind, kannst du da noch einen Faktor ala 1.25 vorhängen. Damit die 5 'leeren' balken nicht angezeigt werden, muss die y-Achse noch mit ylim angepasst werden.
Gruß Jan
|
|
|
mahi_mahi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 12:22
Titel:
|
 |
du hast mir richtig weitergeholfen! dafür 1000mal Danke.
Aber eins noch: wofür steht cnt? Sorry, bin noch Anfängerin
und wenn ich das ganze Allgemein gestalten will, muss es also lauten:
cnt+(length(x)-1)
zeros((length(x)-1),???); Was müsste ich für 3 einsetzen?
und zum Schluss ylim([0 (length(x)+1)])
??
Danke im Voraus
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 12:45
Titel:
|
 |
cnt ist der Schleifenzähler, der in jedem Schleifendurchlauf von 1 bis zur Anzahl der Balken inkrementiert wird, da musst du also nichts mehr dran ändern.
Bei den Nullen muss mit der Anzahl der Werte pro Balken aufgefüllt werden, die bekommst du mit size heraus:
ylim passt so wie du es geschrieben hast.
Gruß Jan
|
|
|
mahi_mahi |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 5
|
 |
|
 |
Anmeldedatum: 25.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.02.2010, 12:48
Titel:
|
 |
Super
Ich danke Dir!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|