2016-03-28 7 views
0

Ich beginne zu lernen, matplotlib zu verwenden, um Zahlen zu zeichnen. Als ich den berühmten iris Datensatz benutzte und versuchte, eine Handlungsfigur zu zeichnen, stieß ich auf eine Frage.Warum hat die von Matplotlib gezeigte Figur mehr als drei Farben, während ich nur drei Etiketten habe?

import numpy as np 
import pandas as pd 
import matplotlib.pylab as pl 

raw = pd.read_csv('iris.csv') 
data = raw.values 
print data 
x = data[:,0] 
y = data[:,1] 
pl.scatter(x,y,color = ['r','g','b'], s = [30,40,50], alpha=0.5) 
pl.figure() 
pl.show() 
labels = set(data[:,4]) 
print labels 

bekam ich die Ausgabe

... 
[6.7 3.3 5.7 2.5 'Iris-virginica'] 
[6.7 3.0 5.2 2.3 'Iris-virginica'] 
[6.3 2.5 5.0 1.9 'Iris-virginica'] 
[6.5 3.0 5.2 2.0 'Iris-virginica'] 
[6.2 3.4 5.4 2.3 'Iris-virginica'] 
[5.9 3.0 5.1 1.8 'Iris-virginica']] 
set(['Iris-virginica', 'Iris-setosa', 'Iris-versicolor']) 

ich nur die ersten beiden Funktionen verwendet, weil ich nicht wusste, ob es möglich ist, eine hohe Dimensions Figuren zu zeichnen.

Dies ist die Figur, die ich bekam enter image description here

Es waren mehr als drei Farben, während Sie von der Ausgabe sehen können, gab es genau drei Etiketten ('Iris-virginica', 'Iris-setosa', 'Iris-versicolor').

Ich frage mich, wie Matplotlib entscheidet, welche Farbe zu verwenden?
Wofür sind die verschiedenen Farben?

Was soll ich tun, um eine dreifarbige Plotfigur zu zeigen?

Antwort

1

Sie erhalten diese Zahl mit pyplot.scatter, genauer gesagt mit dieser Codezeile:

pl.scatter(x, y, color=['r','g','b'], s=[30,40,50], alpha=0.5) 

In der Zeile über keine Hinweise gibt auch immer über Etiketten ist. x und y sind nur zwei Zahlen.

Um die Punkte zu färben, verwendet scatter das Argument color=['r', 'g', 'b']. Wenn color die gleiche Größe wie x und y hat, dann hat jeder Punkt eine definierte Farbe. Aber wenn color kleiner ist als x und y, dann scatter wird durch color so oft durchlaufen wie nötig. Zum Beispiel:

x = [1, 2, 3, 4, 5]  
color = ['r', 'g', 'b'] becomes ['r', 'g', 'b', 'r', 'g'] 

Und für das letzte Geheimnis „warum gibt es mehr als drei Farben auf den Stellplätzen“, es ist, weil die Transparenz alpha-0,5 gesetzt (alle Farben 50% transparent sind). Einige der Datenpunkte haben die gleichen x und y Koordinaten, so dass die Farben überlagern, und es sieht so aus, als gäbe es mehr Farben als rot, grün, blau.


Um die richtigen Farben zu zeichnen, müssen Sie die Etiketten Informationen verwenden. Python scatter plot with colors corresponding to strings sollte Ihnen helfen.

Verwandte Themen