2016-07-13 8 views
0

Ich habe zwei Vektoren x und y und eine Matrix, so dass z[i,j] = f(x[i], y[j])matplotlib Plot Matrix, die die ursprünglichen Koordinaten halten

I würde z keeping auf der Achse der Koordinaten in x und y plotten mögen. Mit anderen Worten, der Punkt z[i, j] sollte in Position x[i], y[j] in der Handlung bleiben.

Ich muss diese Beziehung beibehalten, da ich verschiedene Plots überlappen muss.

plt.imshow(z) funktioniert nicht wie z[i,j] in Position ist (i, j) und nicht (x[i], x[j])

Wie kann ich lösen?

EDIT: Ich brauche eine 2-dimensionale Darstellung

Antwort

2

Sie möglicherweise ein Streudiagramm verwenden könnte.

import matplotlib.pyplot as plt 
import numpy as np 
N = 40 
X = np.random.rand(N) 
Y = np.random.rand(N) 
def f(x,y): #function f 
    return x+y 
Z = np.zeros([N,N]) 
for i in range(N): 
    for j in range(N): 
     Z[i,j] = f(X[i],Y[j]) 
     plt.scatter(X[i],Y[j],c=Z[i,j],s=40,vmin=0.0,vmax=2.0,cmap='viridis',marker='s') 

plt.show() 

enter image description here

+0

Siehe auch: http://stackoverflow.com/questions/38953668/plotting-2-variables-with-a-heat-map/39919592#comment67487195_39919592 für eine Lösung, die die Scatterplot zu vermeiden eine Schleife mit Meshgrid. – JLT