python matplotlib contour

python - Trazado de isolinas/contornos en matplotlib a partir del conjunto de datos(x, y, z)



contour (1)

Hola, soy nuevo en programación y estoy tratando de hacer algo que probablemente sea realmente obvio, pero por mi vida no puedo entenderlo. Tengo una serie de datos x, y, z (en mi caso, correspondientes a la distancia, profundidad y pH). Me gustaría trazar isolinas de los datos z (pH) en una cuadrícula xy (distancia, profundidad) usando matplotlib. ¿Hay alguna forma de hacer esto? Gracias.


La solución dependerá de cómo estén organizados los datos.

Datos en cuadrícula regular

Si los datos x e y ya definen una cuadrícula, se pueden cambiar fácilmente a una cuadrícula cuadrilátera. P.ej

#x y z 4 1 3 6 1 8 8 1 -9 4 2 10 6 2 -1 8 2 -8 4 3 8 6 3 -9 8 3 0 4 4 -1 6 4 -8 8 4 8

puede trazarse como un contour usando

import matplotlib.pyplot as plt import numpy as np x,y,z = np.loadtxt("data.txt", unpack=True) plt.contour(x.reshape(4,3), y.reshape(4,3), z.reshape(4,3))

Datos arbitrarios

(a) En caso de que los datos no se encuentren en una cuadrícula cuadrilateral, se pueden interpolar los datos en una cuadrícula. Matplotlib proporciona un método para hacerlo, utilizando matplotlib.mlab.griddata .

import matplotlib.mlab xi = np.linspace(4, 8, 10) yi = np.linspace(1, 4, 10) zi = matplotlib.mlab.griddata(x, y, z, xi, yi, interp=''linear'') plt.contour(xi, yi, zi)

(b) Finalmente, uno puede trazar un contorno completamente sin el uso de una cuadrícula cuadrilátera. Esto se puede hacer usando tricontour .

plt.tricontour(x,y,z)

Un ejemplo que compara los dos últimos métodos se encuentra en la página matplotlib .