Hi,
bin gerade etwas am verzweifeln.
Habe sowas hier:
x =[0,1,2,3]
y=[213,1232111,32,12]
Daraus will ich nun ein Histogramm machen und zwar soll dann in Bin 0 die 213 stehen,
im bin 1 die 1232111 usw.
Hab mir dazu bisher matplotlib und numpy angesehen aber die wollen die Daten anscheinend in der Form:
y=[0,0,0,0,0,0,..207x später, 1,1,1,1.....1232100x später, 2,2,2,2...etc] haben um daraus dann ein Bining zu erstellen.
Das habe ich aber doch schon. Wie bekomme ich es nun hin das hier mein Bining einfach verwendet wird?
Bis später
p90
Histogramm mit bereits vorhandenem Bining erstellen
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Kurze Verständnisfrage: Was ist ein Bining?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Was ist damit falsch? Mach ein Bild wie die Daten aussehen sollen damit wir besser verstehen können was dein Ziel ist.
Code: Alles auswählen
import matplotlib.pyplot as plt
x =[0,1,2,3]
y=[213,111,32,12]
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.bar(x, y)
plt.show()
Hi,
also immo sieht das so aus:
es sollte aber so aussehen (habe hier statt einem Histogramm eine figure genommen)
Im Prinzip schreibt er z.B. statt 1000 Ereignisse in Kanal 4 ein Ereignis in Kanal 1000.
PS:
Bining ist einfach nur wenn ich meine Daten in Bins, also in das jeweilige Teil meines Histogramms einordne. Nehmen wir an ich habe 10 bins von 0 bis 10.
Dann würde der Wert 0,23 im Bin 0 landen und dies um ein erhöhen.
also immo sieht das so aus:
es sollte aber so aussehen (habe hier statt einem Histogramm eine figure genommen)
Im Prinzip schreibt er z.B. statt 1000 Ereignisse in Kanal 4 ein Ereignis in Kanal 1000.
PS:
Bining ist einfach nur wenn ich meine Daten in Bins, also in das jeweilige Teil meines Histogramms einordne. Nehmen wir an ich habe 10 bins von 0 bis 10.
Dann würde der Wert 0,23 im Bin 0 landen und dies um ein erhöhen.
ich verstehe die Ausgangslage und dein Ziel leider immer noch nicht
Wie sollen wir dir eine Lösung zeigen wenn du uns 4 Datenwerte gibst. Gleichzeitig aber Bilder zeigst die > 1000 Werte haben. Da kann ich leider beim besten Willen keinen Zusammenhang herstellen. Der grosse Peak ist bei dir bei auf der x-Achse bei ca. 150 und bei den Beispieldaten bei 1.
Da du das Bining bereits selber machst, musst du die Daten doch nur noch mit 'bar' Plotten.
Wie sollen wir dir eine Lösung zeigen wenn du uns 4 Datenwerte gibst. Gleichzeitig aber Bilder zeigst die > 1000 Werte haben. Da kann ich leider beim besten Willen keinen Zusammenhang herstellen. Der grosse Peak ist bei dir bei auf der x-Achse bei ca. 150 und bei den Beispieldaten bei 1.
Da du das Bining bereits selber machst, musst du die Daten doch nur noch mit 'bar' Plotten.
Also ich möchte ein Bild haben das so aussieht wie Bild Zwei.
So sollten meine Daten aussehen.
Okay, ich mache ein einfacheres Beispiel:
Meine Daten die ich bekomme sehen so aus:
1,2,1,2,0,0,1,0,0,0,3,1,0,1,1,0
Dabei entspricht die Position der Zahl genau ihrem Kanal.
Meine Lesefunktion macht da sowas drauß:
x=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
y=[1,2,1,2,0,0,1,0,0,0, 3, 1, 0, 3, 1, 0]
Dies soll nun in ein Histogramm geplottet werden.
Es sollte also in etwa so aussehen (figure macht das ganze halt ziemlich hässlich aber ihr bekommt sicherlich die Idee)
Stattdessen bekomme ich aber diesen Plot:
Er schreibt also nicht eine 1 in Kanal 0, eine 2 in Kanal 1 usw. sondern eine 5 in Kanal 1, eine 2 in Kanal 2 und eine 2 in Kanal 3. Dazu eine 7 in Kanal 0
So sollten meine Daten aussehen.
Okay, ich mache ein einfacheres Beispiel:
Meine Daten die ich bekomme sehen so aus:
1,2,1,2,0,0,1,0,0,0,3,1,0,1,1,0
Dabei entspricht die Position der Zahl genau ihrem Kanal.
Meine Lesefunktion macht da sowas drauß:
x=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
y=[1,2,1,2,0,0,1,0,0,0, 3, 1, 0, 3, 1, 0]
Dies soll nun in ein Histogramm geplottet werden.
Es sollte also in etwa so aussehen (figure macht das ganze halt ziemlich hässlich aber ihr bekommt sicherlich die Idee)
Stattdessen bekomme ich aber diesen Plot:
Er schreibt also nicht eine 1 in Kanal 0, eine 2 in Kanal 1 usw. sondern eine 5 in Kanal 1, eine 2 in Kanal 2 und eine 2 in Kanal 3. Dazu eine 7 in Kanal 0
dieses Skript:
macht aus deinen Daten folgenden Plot:
was du ja scheinbar haben möchtest... Ich bezweifle es zwar (aber ich verstehe dein Problem so), da ich dieses Skript schon in meinem ersten Post in diesem Thread gezeigt habe. Falls ich es immer noch falsch verstanden habe so gebe ich auf
Code: Alles auswählen
import matplotlib.pyplot as plt
x=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
y=[1,2,1,2,0,0,1,0,0,0, 3, 1, 0, 3, 1, 0]
fig = plt.figure()
ax1 = fig.add_subplot(111)
plt.bar(x, y, 0.1)
plt.show()
was du ja scheinbar haben möchtest... Ich bezweifle es zwar (aber ich verstehe dein Problem so), da ich dieses Skript schon in meinem ersten Post in diesem Thread gezeigt habe. Falls ich es immer noch falsch verstanden habe so gebe ich auf
Hi,
ah jetzt kapier ich das auch mit dem bar!
Ja genau das habe ich gesucht!
Hatte nur Beispiele gesehen wo bar so genutzt wurde das dort nur ein Balken erzeugt wurde und
dann Anteilig Werte angezeigt wurden.
Herzlichen Dank!!
ah jetzt kapier ich das auch mit dem bar!
Ja genau das habe ich gesucht!
Hatte nur Beispiele gesehen wo bar so genutzt wurde das dort nur ein Balken erzeugt wurde und
dann Anteilig Werte angezeigt wurden.
Herzlichen Dank!!