2012-05-25 11 views
6

Sto usando Python e un file CSV. Attualmente sto cercando di modificare il diagramma a dispersione (2d) qui sotto per cambiare i colori in base a una terza colonna nel mio file csv. Dopo aver cercato tra più post, voglio sostanzialmente usare una mappa di colori generica (arcobaleno) e moltiplicare il mio terzo array con la mappa di colori per visualizzare colori diversi per ciascuno dei punti xy. Penso di poter fare tutto dalla funzione ax.scatter ma non sono sicuro di come moltiplicare ogni coordinata x, y per la mappa di colori e il terzo numero di array. Dovrebbe assomigliare ad una trama di contorno, ma preferirei una trama a dispersione colorata diversa.Come modificare 2d Scatterplot per visualizzare il colore basato sul terzo array nel file csv?

Ecco il codice che sto usando:

import matplotlib 
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas  
from matplotlib.figure import Figure 
import matplotlib.mlab as mlab 
import numpy as np 

r = mlab.csv2rec('test.csv') 
fig = Figure(figsize=(6,6)) 
canvas = FigureCanvas(fig) 

ax = fig.add_subplot(111) 
ax.set_title("X vs Y AVG",fontsize=14) 
ax.set_xlabel("XAVG",fontsize=12) 
ax.set_ylabel("YAVG",fontsize=12) 
ax.grid(True,linestyle='-',color='0.75') 

x = r.xavg #first column 
y = r.yavg #second column 
z = r.wtr #third column 

ax.scatter(x,y,s=.2,c='b', marker = ',', cmap = ?); 

risposta

10

check-out della linea di dispersione

import matplotlib.pyplot as plt 
from matplotlib import cm 
import numpy as np 

fig = plt.figure(figsize=(6,6)) 
ax = fig.add_subplot(111) 
ax.set_title("X vs Y AVG",fontsize=14) 
ax.set_xlabel("XAVG",fontsize=12) 
ax.set_ylabel("YAVG",fontsize=12) 
ax.grid(True,linestyle='-',color='0.75') 
x = np.random.random(30) 
y = np.random.random(30) 
z = np.random.random(30) 

# scatter with colormap mapping to z value 
ax.scatter(x,y,s=20,c=z, marker = 'o', cmap = cm.jet); 

plt.show() 

e produce

enter image description here

+0

ringrazio molto, che ha risposto alla mia domanda. Suppongo ora che per cambiare la mappa dei colori, posso seguire l'altra documentazione. Volevo anche conservare gli elementi del quadro nel codice in modo da poter utilizzare il seguente codice per salvare l'immagine: 'canvas.print_figure (' test.png ', dpi = 250)' – Jonny

+0

@Jonny non è necessario l'oggetto canvas per salvare le tue figure, puoi usare [savefig] (http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.savefig). – nye17

+0

Vero, vero. Grazie per il feedback – Jonny

Problemi correlati