Hi I\'m new to programming and I\'m trying to do something that\'s probably really obvious but for the life of me I can\'t figure it out. I have a series of x, y, z data (in
The solution will depend on how the data is organized.
If the x
and y
data already define a grid, they can be easily reshaped to a quadrilateral grid. E.g.
#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
can plotted as a contour using
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))
(a) In case the data is not living on a quadrilateral grid, one can interpolate the data on a grid. One method to do so is provided by matplotlib itself, using 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) Finally, one can plot a contour completely without the use of a quadrilateral grid. This can be done using tricontour.
plt.tricontour(x,y,z)
An example comparing the latter two methods is found on the matplotlib page.