Ich habe eine Datendatei mit 3 Spalten. Die ersten 2 Spalten repräsentieren Koordinaten, der dritte ist ein String-Wert wie 'foo', 'bar' oder 'ter'.Wie ändert man Marker und Farbe in Matplotlib für einen bestimmten Spaltenwert?
Ich möchte mit Pythons Matplotlib basierend auf diesem Etikett, verschiedene Marker und Farbe anzeigen. Beispiel:
- foo => roter Kreis
- bar => grünes Dreieck
- ter => schwarzes Quadrat
Was habe ich bis jetzt ist:
import numpy as np
import matplotlib.pyplot as plt
coordData = np.genfromtxt("mydata.csv", usecols=(0,1), delimiter=",", dtype=None)
coordLabels = np.genfromtxt("mydata.csv", usecols=2, delimiter=",", dtype=None)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(coordData[:, 0], coordData[:, 1], c="r", marker="o")
plt.show()
Wie kann ich Marker und Farbe basierend auf den Werten coordLabels
wechseln?
SOLUTION
auf Anregung Basierend habe ich einige Änderungen:
coordData = np.genfromtxt("mydata.csv", usecols=(0, 1), delimiter=",", dtype=None)
coordLabels = np.genfromtxt("mydata.csv", usecols=2, delimiter=",", dtype=None)
fig = plt.figure()
ax = fig.add_subplot(111)
uniqueVals = np.unique(coordLabels)
markers = ['^', 'o', '*']
colors = { '^' : 'r',
'o' : 'b',
'*' : 'g'}
for marker, val in zip(markers, uniqueVals):
toUse = coordLabels == val
ax.scatter(coordData[toUse,0], coordData[toUse,1], c = colors[marker], marker=marker)
plt.show()
Mit einigen Änderungen, die ich Ihren Vorschlag angepasst erstellen. Vielen Dank. – Randomize