2013-03-21 16 views
5

Ho cercato di tracciare la temperatura con i sensori e ho voluto scoprire come sia possibile costruire una mappa contorno/calore o modificare i colori dei miei punti in base a una cmap?Python Matlotlib point color

Ho la seguente trama molto semplice:

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import numpy as np 
from pylab import * 

figure(figsize=(15, 8)) 
# use ginput to select markers for the sensors 
matplotlib.pyplot.hot() 

markers = [(269, 792, 0.65), (1661, 800, 0.5), (1017, 457, 0.8)] 
x,y,t = zip(*markers) 

img = mpimg.imread('floor.png') 
imgplot = plt.imshow(img, cmap=cm.hot) 
plot(x, y, 'h', c=t, ms=15) 

colorbar() 
show() 

Il terzo valore marcatori spera, dovrebbe essere un colore punto. Tuttavia, quando realizzo la trama, coloriamo ogni punto nello stesso modo usando il primo valore nei marcatori. È possibile impostare la cmap dei punti in modo che io possa utilizzare il calore e collegarlo a una temperatura effettiva? I punti attuali stanno tracciando un colore viola chiaro/lilla che presumo sia la cmap predefinita. Vedo che cmap non sembra essere un valore valido per la trama, quindi non sono sicuro di dove specificarlo.

La soluzione alternativa che mi piacerebbe davvero provare a capire sarebbe utilizzare invece contorni o istogramma2d per mostrare il raggio di calore. È possibile tracciare un'immagine? Ho dato un'occhiata all'esempio This ma non riesco a essere in grado di modificarlo correttamente per utilizzare i valori effettivi invece della funzione casuale. Qualcuno ha una soluzione alternativa/codice di esempio che ha usato in passato che fa quello che sto cercando? Mi sto un po 'confuso con la documentazione che ho trovato.

Grazie!

risposta

2

questo è ciò che il scatter plot è per:

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import numpy as np 
from pylab import * 

figure(figsize=(15, 8)) 
# use ginput to select markers for the sensors 
matplotlib.pyplot.hot() 

markers = [(269, 792, 0.65), (1661, 800, 0.5), (1017, 457, 0.8)] 
x,y,t = zip(*markers) 

img = mpimg.imread('floor.png') 
imgplot = plt.imshow(img, cmap=cm.hot) 
scatter(x, y, marker='h', c=t, s=150) 

colorbar() 
show() 

noti che gli argomenti sono diversi da plot e che la scala dimensioni in modo diverso. Se vuoi cambiare il colore dei punti, potresti voler usare l'argomento cmap di scatter

+0

Ah gli argomenti mi hanno confuso - grazie David – Ollie