[Matplotlib-users] Problem using imshow with Matplotlib/Basemap

Benjamin Root ben.v.root at gmail.com
Tue Oct 10 11:20:04 EDT 2017


Ah, the problem was that by default, the limits for a Basemap goes from
-180 to 180, and -90 to 90. If you do:

m = Basemap(llcrnrlat=lat_inf, llcrnrlon=lon_inf,
            urcrnrlat=lat_sup, urcrnrlon=lon_sup)

Then things line up correctly, and you don't need the origin keyword
argument, the transpose, or even the extent argument.

In fact, there might even be a bug, as I would have expected specifying the
extent should have worked regardless of the original bounds. Might need to
look into that.

Cheers!
Ben Root


On Mon, Oct 9, 2017 at 7:54 PM, Mauro Cavalcanti <maurobio at gmail.com> wrote:

> Hi,
>
> Thanks for you reply and suggestions.
>
> I changed the imshow call to:
>
> im = m.imshow(grilla_salida, cmap='summer', extent=(lon_inf, lat_inf,
> lon_sup, lat_sup), aspect='auto', interpolation='none')
>
> However, the figure is stil wrong (see attachment).
>
> Maybe if instead of imshow, should I use meshgrid/pcolormesh?
>
> Best regards,
>
> 2017-10-09 11:29 GMT-03:00 Benjamin Root <ben.v.root at gmail.com>:
>
>> First, you shouldn't need to transpose your image... that'll effectively
>> rotate the data by 90 degrees. Second, you didn't specify the extents of
>> your image, so Basemap is putting everything starting at coordinate 0,0 in
>> the default projection.
>>
>> If you specify the extent keyword argument to imshow as the (lon1, lat1,
>> lon2, lat2) tuple for the lower-left and upper right corners, you won't
>> even need the origin='lower', and you definitely won't need the transpose.
>>
>> Cheers!
>> Ben Root
>>
>>
>> On Sun, Oct 8, 2017 at 2:33 PM, Mauro Cavalcanti <maurobio at gmail.com>
>> wrote:
>>
>>> Dear ALL,
>>>
>>> I have a simple dataset of longitudes/latitudes (see the attached csv
>>> file).
>>>
>>> From such data, I want to generate a grid like this:
>>>
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0
>>> 0 0 0 0 0 0 1 0 0 0 0 0 0
>>> 0 0 0 0 0 0 1 1 2 0 0 0 0
>>> 0 0 0 0 0 1 1 1 1 0 0 0 0
>>> 0 0 0 1 0 1 0 0 0 0 0 0 0
>>> 0 0 0 2 0 0 0 0 0 0 0 0 0
>>> 0 0 0 0 0 0 0 0 0 1 3 0 0
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0
>>> 0 0 0 0 0 0 0 0 0 1 0 0 0
>>> 0 0 0 0 0 0 0 0 0 1 0 0 0
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0
>>> 0 0 0 0 0 0 0 0 0 0 1 0 0
>>> 0 0 0 0 0 0 0 0 0 0 1 0 0
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0
>>> 0 0 0 0 0 0 0 0 0 0 0 0 0
>>>
>>> which gives the number of data records in each cell of the grid, using
>>> one of the variables in the dataset ("spp") as a categorical (grouping)
>>> factor.
>>>
>>> From this grid, I then want to create a heat map, superimposed on a
>>> Matplotlib/Basemap.
>>>
>>> I wrote some code which does what I want (see the attachments).
>>>
>>> It (mostly) works, but te problem is that the grid image is not being
>>> displayed correctly: as shown in the attached figure, it appears too small,
>>> and in the lower left corner of the map, instead of where it should be (the
>>> West coast of Africa, along the Gulf of Guinea).
>>>
>>> Thanks in advance for any assistance you can provide.
>>>
>>> Best regards,
>>>
>>> --
>>> Dr. Mauro J. Cavalcanti
>>> E-mail: maurobio at gmail.com
>>> Web: http://sites.google.com/site/maurobio
>>> "Life is complex. It consists of real and imaginary parts."
>>>
>>> _______________________________________________
>>> Matplotlib-users mailing list
>>> Matplotlib-users at python.org
>>> https://mail.python.org/mailman/listinfo/matplotlib-users
>>>
>>>
>>
>
>
> --
> Dr. Mauro J. Cavalcanti
> E-mail: maurobio at gmail.com
> Web: http://sites.google.com/site/maurobio
> "Life is complex. It consists of real and imaginary parts."
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20171010/23aacfbc/attachment.html>


More information about the Matplotlib-users mailing list