2017-11-30 1 views
1

Entschuldigung wenn das eine dumme Frage ist, aber ich kann die Lösung für mein Problem nicht finden. Ich habe einige Punkte, die ich plotten möchte und jeder dieser Punkte entspricht einer Variablen. Meine Frage ist: Wie kann ich jeden Punkt im selben Plot mit jeweils einer eindeutigen Farbe darstellen und eine Legende plotten?Plot Werte von verschiedenen Variablen

Dies ist der Code, den ich bisher habe:

import matplotlib.patches as mpatches 
import matplotlib.pyplot as plt 

function=['a', 'b', 'c', 'd', 'e'] 
acc_scores = [0.879, 0.748, 0.984, 0.944, 0.940] 

fig, ax = plt.subplots() 
colors= ['b', 'r', 'g', 'c', 'y'] #Colors I wanted to use for each data point 
plt.plot([1,2,3,4,5], acc_scores, 'ro') 
plt.axis([0, 6, 0.5, 1]) 
ax.set_xlabel('Functions', size=18) 
ax.set_ylabel('Accuracy', size=18) 
plt.show() 

Dieser Code gibt mir die Punkte, aber alle die gleiche Farbe.

Danke für Ihre Hilfe!

+0

Es gibt sogar eine [Beispiel] (https://matplotlib.org/devdocs/gallery/lines_bars_and_markers/scatter_with_legend.html) auf die Matplotlib-Seite dazu. – ImportanceOfBeingErnest

Antwort

0

Sie zeichnen alle Ihre Daten als ein Liniendiagramm, und sie haben alle die gleiche Farbe, weil Sie ro angegeben haben. Wenn Sie möchten, dass jeder Punkt anders ist, können Sie jeden Punkt durchlaufen und ihn einzeln grafisch darstellen. Der Parameter label ist hilfreich beim Erstellen einer Legende.

Versuchen Sie folgendes:

import matplotlib.patches as mpatches 
import matplotlib.pyplot as plt 

function=['a', 'b', 'c', 'd', 'e'] 
acc_scores = [0.879, 0.748, 0.984, 0.944, 0.940] 

fig, ax = plt.subplots() 
colors= ['b', 'r', 'g', 'c', 'y'] #Colors I wanted to use for each data point 
for x, y, c, f in zip([1,2,3,4,5], acc_scores, colors, function): 
    plt.scatter(x, y, c=c, label=f) 

plt.axis([0, 6, 0.5, 1]) 
ax.set_xlabel('Functions', size=18) 
ax.set_ylabel('Accuracy', size=18) 
plt.legend() 
plt.show() 

Ausgabe

Example Output

+0

Danke Pault für deine Antwort – Leonor

Verwandte Themen