2012-05-25 8 views
6

Estoy usando Python y un archivo CSV. Actualmente estoy tratando de modificar el diagrama de dispersión (2d) a continuación para cambiar los colores en función de una tercera columna en mi archivo csv. Después de buscar en varias publicaciones, básicamente quiero usar un mapa de colores genérico (arco iris) y multiplicar mi tercera matriz por el mapa de colores para mostrar diferentes colores para cada uno de los puntos xy. Creo que puedo hacer todo desde la función ax.scatter, pero no estoy seguro de cómo multiplicar cada coordenada x, y por el mapa de colores y el tercer número de matriz. Debería ser similar a una gráfica de contorno, pero preferiría un diagrama de dispersión de diferentes colores.¿Cómo modificar 2d Scatterplot para mostrar el color en función de la tercera matriz en el archivo csv?

Aquí está el código que estoy utilizando:

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 = ?); 

Respuesta

10

la salida de la línea de dispersión

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() 

y produce

enter image description here

+0

Muchas gracias, que respondió a mi pregunta. Supongo ahora que para cambiar el mapa de color, puedo seguir la otra documentación. También quería mantener los elementos del lienzo en el código para poder usar el siguiente código para guardar la imagen: 'canvas.print_figure (' test.png ', dpi = 250)' – Jonny

+0

@Jonny no necesariamente necesita el objeto canvas para guardar sus figuras, puede usar [savefig] (http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.savefig). – nye17

+0

cierto, cierto. Gracias por la retroalimentación – Jonny

Cuestiones relacionadas