griddata is not working after update to Python 2.7

Dear All,

I used to use griddata in order to make my contourmaps. However, after I updated
my Python from 2.6 to 2.7 griddata is not working anymore.

I tried some workarounds but no success.

The countourmap that I produced before is here.
http://dl.dropbox.com/u/17983476/matplotlib/contour_dT_workingbefore.png

After the Python 2.7 update, it turns to the following.
http://dl.dropbox.com/u/17983476/matplotlib/contour_dT_broken.png

Here is the datafile.
http://dl.dropbox.com/u/17983476/matplotlib/contour_dT.dat

And the associated python script (which is also below).
http://dl.dropbox.com/u/17983476/matplotlib/contour_dT.py

The code that I was using before is here. I had to comment out #import griddata
line because this is the only way that it continues. Is this a bug in griddata,
or if there are new workarounds, I would be glad to know a new method to produce
my contourplots again.

Thanks a lot

···

----------------------------
#! /usr/bin python

import os
import sys
import math
from math import *
from numpy import *
#import griddata
from pylab import *
from matplotlib.ticker import FormatStrFormatter
params = {'axes.labelsize': 20,
    'text.fontsize': 15,
    'legend.fontsize': 14,
    'xtick.labelsize': 20,
    'ytick.labelsize': 20,
    'text.usetex': True }
rcParams.update(params)

par1 = []
par2 = []
chis = []

rfile = file('contour_dT.dat','r')
line = rfile.readline()
data = line.split()

while len(data) >1:
  par1.append(float(data[0]))
  par2.append(float(data[1]))
  chis.append(float(data[2]))
  line = rfile.readline()
  data = line.split()

par1 = array(par1)
par2 = array(par2)
chis = array(chis)

xi = linspace(3.2,7.8,50)
yi = linspace(15,300,50)
zi = griddata(par2,par1,chis,xi,yi)
levels = [0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.2,1.5,2,3,4,6,10,12,15,20,25,30,40,50]
CS = contourf(xi,yi,zi,levels,cmap=cm.jet)
CS2 = contour(CS, levels=CS.levels[::2],
                        colors = 'r',
                        hold='on')

cbar = colorbar(CS)
cbar.add_lines(CS2)

savefig("contour_dT.png")
show()

First, if you were importing griddata before like that, that it is quite likely that it was some other module that was installed in your python-2.6/site-packages directory that overrode numpy’s griddata. When you upgraded, that griddata module could not be found in python-2.7/site-packages. Commenting it out allowed python to find pylab’s griddata.

Second, you really need to clean up your imports. There is no need for the two math imports, or the numpy import (because the pylab import handles that).

Oddly, though, your griddata import comes before the pylab import. I would expect that the pylab griddata would have overridden the first griddata import. And so there shouldn’t have been a difference.

Did you happen to upgrade matplotlib and/or numpy as well?

Ben Root

···

On Thursday, May 24, 2012, Umut Yildiz wrote:

Dear All,

I used to use griddata in order to make my contourmaps. However, after I updated

my Python from 2.6 to 2.7 griddata is not working anymore.

I tried some workarounds but no success.

The countourmap that I produced before is here.

http://dl.dropbox.com/u/17983476/matplotlib/contour_dT_workingbefore.png

After the Python 2.7 update, it turns to the following.

http://dl.dropbox.com/u/17983476/matplotlib/contour_dT_broken.png

Here is the datafile.

http://dl.dropbox.com/u/17983476/matplotlib/contour_dT.dat

And the associated python script (which is also below).

http://dl.dropbox.com/u/17983476/matplotlib/contour_dT.py

The code that I was using before is here. I had to comment out #import griddata

line because this is the only way that it continues. Is this a bug in griddata,

or if there are new workarounds, I would be glad to know a new method to produce

my contourplots again.

Thanks a lot


#! /usr/bin python

import os

import sys

import math

from math import *

from numpy import *

#import griddata

from pylab import *

from matplotlib.ticker import FormatStrFormatter

params = {‘axes.labelsize’: 20,

            'text.fontsize': 15,

            'legend.fontsize': 14,

            'xtick.labelsize': 20,

            'ytick.labelsize': 20,

            'text.usetex': True }

rcParams.update(params)

par1 = []

par2 = []

chis = []

rfile = file(‘contour_dT.dat’,‘r’)

line = rfile.readline()

data = line.split()

while len(data) >1:

    par1.append(float(data[0]))

    par2.append(float(data[1]))

    chis.append(float(data[2]))

    line = rfile.readline()

    data = line.split()

par1 = array(par1)

par2 = array(par2)

chis = array(chis)

xi = linspace(3.2,7.8,50)

yi = linspace(15,300,50)

zi = griddata(par2,par1,chis,xi,yi)

levels = [0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.2,1.5,2,3,4,6,10,12,15,20,25,30,40,50]

CS = contourf(xi,yi,zi,levels,cmap=cm.jet)

CS2 = contour(CS, levels=CS.levels[::2],

                    colors = 'r',

                    hold='on')

cbar = colorbar(CS)

cbar.add_lines(CS2)

savefig(“contour_dT.png”)

show()

Dear Benjamin,

Thanks for the reply. Apparently my Python 2.6 version was completely removed and I only have Python 2.7. My matplotlib and numpy are the latest versions. In matplotlib homepage, I found that meshgrid should do the same job, but I cannot make script to run it from a file. Is there a simple way to do contour plotting on a simple 3 column file (x, y, z) where I gave a link to the table file in my previous email?

Thanks a lot

Umut

···

First, if you were importing griddata before like that, that it is quite likely that it was some other module that was installed in your python-2.6/site-packages directory that overrode numpy’s griddata. When you upgraded, that griddata module could not be found in python-2.7/site-packages. Commenting it out allowed python to find pylab’s griddata.

Second, you really need to clean up your imports. There is no need for the two math imports, or the numpy import (because the pylab import handles that).

Oddly, though, your griddata import comes before the pylab import. I would expect that the pylab griddata would have overridden the first griddata import. And so there shouldn’t have been a difference.

Did you happen to upgrade matplotlib and/or numpy as well?

Ben Root