2012-05-25 12 views
6

Używam Pythona i pliku CSV. Obecnie próbuję zmodyfikować wykres punktowy (2d) poniżej, aby zmienić kolory w oparciu o trzecią kolumnę w moim pliku csv. Po przeszukiwaniu wielu postów, zasadniczo chcę użyć ogólnej mapy kolorów (tęcza) i pomnożyć moją trzecią tablicę przez mapę kolorów, aby wyświetlić różne kolory dla każdego z punktów xy. Myślę, że mogę zrobić wszystko od funkcji ax.scatter, ale nie jestem pewien, jak pomnożyć każdą inną współrzędną x, y przez mapę kolorów i trzecią liczbę tablic. Powinien wyglądać podobnie do wykresu konturu, ale wolałbym inny kolorowy wykres punktowy.Jak zmodyfikować wykres 2d Scatterplot, aby wyświetlić kolor oparty na trzeciej tablicy w pliku csv?

Oto kod używam:

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

Odpowiedz

10

Wyjazd linia rozrzut

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

i produkuje

enter image description here

+0

Dziękuję bardzo, że odpowiedział na moje pytanie. Zakładam teraz, że aby zmienić mapę kolorów, mogę śledzić inną dokumentację. Chciałem również zachować elementy płótna w kodzie, aby móc użyć poniższego kodu do zapisania obrazu: "canvas.print_figure (" test.png ", dpi = 250) ' – Jonny

+0

@Nie musisz koniecznie potrzebować obiekt canvas, aby zapisać swoje dane, możesz użyć funkcji [savefig] (http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.savefig). – nye17

+0

Prawda, prawda. Dzięki za opinie – Jonny