Hi,
ich habe eine Frage und zwar habe ich Folgrndes Problem. Ich habe zwei Spalten A und B
A B
0 1
10 1
20 1
30 0
40 2
50 0
60 0
70 3
80 3
90 3
100 0
110 0
120 2
130 0
140 0
150 1
In der ersten Spalte steht eine Position also soll die y-Achse sein und in der zweiten Spalte eine Klassifizierung also 1 = gut, 2 = toll, 3 = super toll.
Nun möchte ich dies darstellen. Ich hätte gern als y Achse die Position (A) die x-Achse soll eine feste Breite 1 haben und überall wo B = 1 ist hätte ich gern einen horizontalen grünen streifen mit der länge 1 wo B = 2 ist einen blauen streifen B= 3 einen gelben.
Hab bis jetzt in matplotlib nichts geeignetes gefunden.
Ich hoffe das Problem wird klar?
Kann mir jemand helfen?
Danke im Vorraus
Matplotlibund das Darstellen von Klassen
Du könntest mehrere bar-Plots überlagern, für jede Farbe einen eigenen Plot:
http://matplotlib.org/examples/pylab_ex ... _demo.html
http://matplotlib.org/examples/pylab_ex ... _demo.html
-
- User
- Beiträge: 88
- Registriert: Freitag 26. September 2014, 14:42
Danke für deine Antwort. Ich hab das bis jetzt so gelöst wie folgt bin aber noch nicht zu frieden.
Also meine Daten sehen jetzt so aus:
7270;;;;3;;;;;
7280;;1;;;;;;;
7290;0;;;;;;;;
7300;;;2;;;;;;
7310;;;2;;;;;;
7320;;1;;;;;;;
7330;;1;;;;;;;
7340;;1;;;;;;;
7350;;;;3;;;;;
7360;;;;3;;;;;
7370;;;;3;;;;;
7380;;;;3;;;;;
Also hab jetzt mehere Spalten gemacht für jede Klasse eine.
Und das Skript sieht so aus:
Also die x-Achse gefällt mir nicht. Die länge der Balken ist mir ja eigentlich egal. Und das zweite Problem ist das ich für die Balken (Klasse) mit dem Wert 0 keine Farbe habe oder keinen Balken.
Hätte da noch jemand eien Idee?
Also meine Daten sehen jetzt so aus:
7270;;;;3;;;;;
7280;;1;;;;;;;
7290;0;;;;;;;;
7300;;;2;;;;;;
7310;;;2;;;;;;
7320;;1;;;;;;;
7330;;1;;;;;;;
7340;;1;;;;;;;
7350;;;;3;;;;;
7360;;;;3;;;;;
7370;;;;3;;;;;
7380;;;;3;;;;;
Also hab jetzt mehere Spalten gemacht für jede Klasse eine.
Und das Skript sieht so aus:
Code: Alles auswählen
import matplotlib.pyplot as plt
from pylab import *
from matplotlib import gridspec
import pandas as pd
#==============================================================
data_ueber = []
with open('daten.csv',
'r') as uebersicht_file:
data = (pd.io.parsers.read_csv(uebersicht_file, "rb",
delimiter=';',
usecols=[0,1,2,3,4,5],
names=(['Position','a','b','c','d','e'])))
data_ueber.append(data)
data_ueber = pd.concat(data_ueber)
#==============================================================
fig2 = plt.figure()
fig2.set_size_inches( 10, 3)
gs = gridspec.GridSpec(1,1)
pl = plt.subplot(gs[0,0])
#pl.ticklabel_format(useOffset=False)
plt.autoscale(tight=True)
plt.gca().invert_yaxis()
bar_width = 20
pl.ticklabel_format(style = 'plain',scilimits=(0,0),axis = 'both')
plt.barh(data_ueber['Position'],data_ueber['b'],bar_width,color='purple',edgecolor = "none")
plt.barh(data_ueber['Position'],data_ueber['c'],bar_width,color='r',edgecolor = "none")
plt.barh(data_ueber['Position'],data_ueber['d'],bar_width,color='y',edgecolor = "none")
plt.barh(data_ueber['Position'],data_ueber['e'],bar_width,color='green',edgecolor = "none")
plt.grid(True)
plt.ylabel(u'Tiefe [cm]')
Hätte da noch jemand eien Idee?