pcolormesh plot from x,y,z data

matplotlib, python

Solution

In the example data provided above, x, y, and z can be easily reshaped to get 2D array. The answer below is for someone who is looking for more generalized answer with random x,y, and z arrays.

import matplotlib.pyplot as plt
from matplotlib.mlab import griddata
import numpy

# use your x,y and z arrays here
x = numpy.random.randint(1,30, 50)
y = numpy.random.randint(1,30, 50)
z = numpy.random.randint(1,30, 50)

yy, xx = numpy.meshgrid(y,x)
zz = griddata(x,y,z,xx,yy, interp='linear')
plt.pcolor(zz)
#plt.contourf(xx,yy,zz) # if you want contour plot
#plt.imshow(zz)
plt.pcolorbar()
plt.show()

Problem

I have data in a textfile in tableform with three columns. I use np.genfromtxt to read all the columns into matplotlib as x, y, z. I want to create a color meshplot where x and y are the coordinates and z represents the color, i think people refer to such a plot as heatmap. My code is as follows: ``` x = np.genfromtxt('mesh.txt', dtype=float, delimiter=' ', usecols = (0)) y = np.genfromtxt('mesh.txt', dtype=float, delimiter=' ', usecols = (1)) z = np.genfromtxt('mesh.txt', dtype=float, delimiter=' ', usecols = (2)) xmesh, ymesh = np.meshgrid(x,y) diagram1.pcolormesh(xmesh,ymesh,z) ``` But I get the following error message: ``` line 7154, in pcolormesh C = ma.ravel(C[0:Ny-1, 0:Nx-1]) # data point in each cell is value at IndexError: too many indices ``` The textfile is as follows: ``` 1 1 5 2 1 4 3 1 2 4 1 6 1 2 6 2 2 2 3 2 1 4 2 9 1 3 7 2 3 4 3 3 3 4 3 5 1 4 3 2 4 4 3 4 7 4 4 6 ``` How is this to solve.

Original source