2017-05-14 9 views
1

Ich habe Datensätze wie (x, y, (z1, z2, z3 ..)). Ich versuchePlotten mehrere Datensätze in Pcolor Plot Python

plt.pcolor(x,y,z1) 
plt.pcolor(x,y,z2) 
plt.pcolor(x,y,z3) 
plt.colorbar() 
plt.show() 

Dies zeigt nur die Pcolor-Plot des letzten Datensatzes. Wie kann ich alle in demselben Diagramm und derselben Farbskala skalieren?

Antwort

0

könnten Sie mit subplots versuchen, und stellen Sie sicher, dass alle Bilder mit dem gleichen Intensitätsskala (die gleichen vmin und vmax Argumente von pcolor() für alle Ihre Bilder). Unten ist ein Beispiel:

import numpy as np 
import matplotlib.pyplot as plt 

dx, dy = 0.15, 0.05 

y, x = np.mgrid[slice(-3, 3 + dy, dy), 
       slice(-3, 3 + dx, dx)] 
z = (1 - x/2. + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2) 
z1 = z[:-1, :-1] 
z2 = z[:-1, :-1] 
z3 = z[:-1, :-1] 
z_min, z_max = -np.abs(z).max(), np.abs(z).max() 

data = [[x,y,z1],[x,y,z2],[x,y,z3]] 

# Plot each slice as an independent subplot 
fig, axes = plt.subplots(nrows=1, ncols=3) 
for dat, ax in zip(data, axes.flat): 
    # The vmin and vmax arguments specify the color limits 
    pc = ax.pcolor(dat[0],dat[1],dat[2], vmin=z_min, vmax=z_max) 
# Make an axis for the colorbar on the right side 
cax = fig.add_axes([0.9, 0.1, 0.03, 0.8]) 
fig.colorbar(pc, cax=cax) 

plt.show() 

es wie folgt zeigen: enter image description here

+0

Was ich will, diese alle in demselben Grundstück setzt. Betrachten Sie ein typisches Bild des einfallenden, reflektierten und übertragenen Lichtstrahls. Ich habe 3 Sätze von Z-Koordinaten, die die reflektierten und übertragenen Wellenamplituden beschreiben. Ich möchte sie zusammensetzen, so dass sie aussehen wie echte Lichtstrahl reflektiert und übertragen wird. – user247534