Histogramm mit bereits vorhandenem Bining erstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

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
Benutzeravatar
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
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

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()
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Hi,
also immo sieht das so aus:
Bild
es sollte aber so aussehen (habe hier statt einem Histogramm eine figure genommen)
Bild

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.
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

ich verstehe die Ausgangslage und dein Ziel leider immer noch nicht :cry:

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.
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

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)
Bild
Stattdessen bekomme ich aber diesen Plot:
Bild
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
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

dieses Skript:

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()
macht aus deinen Daten folgenden Plot:
Bild

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 :(
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

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!!
Antworten