plt.contour
немного конкретен относительно его ввода, значения z должны быть на значениях в прямоугольной сетке angular 2D, см., Например:
import matplotlib.pyplot as plt
import numpy as np
x = np.expand_dims(np.arange(1,11,1), axis=1)
y = np.expand_dims(np.arange(2,21,2), axis=0)
z = y * x
print(x.shape)
print(y.shape)
print(z.shape)
plt.figure()
plt.contour(z)
plt.show()
Вы также можете указать x и y значения для plt.contour
с помощью np.meshgrid
:
XX,YY = np.meshgrid(x,y)
plt.figure()
plt.contour(XX, YY, z)
plt.show()
Если у вас есть z-значения с нерегулярными значениями для x и y, вы можете использовать plt.tricontour
, см. следующий пример:
from matplotlib.tri import Triangulation
data = np.random.normal(0,1,[100,3])
x = data[:,0]
y = data[:,1]
#z = data[:,2]
z = x * y
tri = Triangulation(x,y)
plt.figure()
plt.tricontour(tri, z, )
plt.scatter(x,y, c=z)
plt.show()
Редактировать: из комментария Йохана C я узнал, что это можно упростить без импорта matplotlib.tri
:
plt.figure()
plt.tricontour(x,y,z)
plt.scatter(x,y, c=z)
plt.show()