2013-03-24 12 views
13

Jak utworzyć siatkę countour w pythonie za pomocą matplotlib.pyplot, gdzie siatka jest jednym kolorem, gdzie zmienna z jest niższa, a inna, gdy z jest równa lub większa od zera? Nie jestem zaznajomiony z matplotlib, więc jeśli ktoś może dać mi prosty sposób robienia tego, byłoby świetnie.Wykres konturowy w pytonie

Do tej pory mam:

x= np.arange(0,361) 
y= np.arange(0,91) 

X,Y = np.meshgrid(x,y) 

area = funcarea(L,D,H,W,X,Y) #L,D,H and W are all constants defined elsewhere. 

plt.figure() 
plt.contourf(X,Y,area) 
plt.show() 
+1

Którą wersją pytona używasz (2 lub 3)? – xxmbabanexx

Odpowiedz

37

Można to zrobić za pomocą levels kluczowe w contourf.

enter image description here

import numpy as np 
import matplotlib.pyplot as plt 

fig, axs = plt.subplots(1,2) 

x = np.linspace(0, 1, 100) 
X, Y = np.meshgrid(x, x) 
Z = np.sin(X)*np.sin(Y) 

levels = np.linspace(-1, 1, 40) 

zdata = np.sin(8*X)*np.sin(8*Y) 

cs = axs[0].contourf(X, Y, zdata, levels=levels) 
fig.colorbar(cs, ax=axs[0], format="%.2f") 

cs = axs[1].contourf(X, Y, zdata, levels=[-1,0,1]) 
fig.colorbar(cs, ax=axs[1]) 

plt.show() 

Można zmieniać kolory i wybierając inny colormap; przy użyciu vmin, vmax; itp.

+1

Pozdrawiam! To działa świetnie :) – apkdsmith

+5

Proszę oznaczyć tę odpowiedź jako rozwiązanie ... –