[Matplotlib-users] Obtaining the contour data in terms of latitude and longitude

ashwin .D winash12 at gmail.com
Wed Oct 18 17:32:28 EDT 2017


Ben,
        Thanks ! Can you explain a bit more on what you mean by path
simplification ? Here is the code as I see it right now.

Also I had a second question - cs.levels returns the contour levels
associated with the contours. Is there a dictionary that maps a contour
level to the contour coordinates or is cs.collections in the same order as
cs.levels?

import numpy as np
from netCDF4 import Dataset
import matplotlib.pyplot as plt

clevs = np.arange(5300.,5900.,20.)
cs = plt.contourf(lons, lats, np.squeeze(hgt),clevs)
for cc in cs.collections:
    paths = []
    for pp in cc.get_paths():
        xy = []
        for vv in pp.iter_segments():
            xy.append(vv[0])
            paths.append(np.vstack(xy))
        contours.append(paths)


On Thu, Oct 19, 2017 at 2:38 AM, Benjamin Root <ben.v.root at gmail.com> wrote:

> If you passed the coordinate arrays in with the call to contourf(), then
> you will get what you expect.
>
> I should note that you should watch out for path simplification (you'll
> want to turn it off). I also recommend using contourf() over contour()
> because it handles the edges of the domain better and NaNs.
>
> Cheers!
> Ben Root
>
>
> On Wed, Oct 18, 2017 at 4:59 PM, ashwin .D <winash12 at gmail.com> wrote:
>
>> Hello,
>>          I have data on a 2d lat lon grid(equal grid spacing) in terms of
>> laitude and longitude and heights as enclosed in the image. I need the
>> coordinates(in terms of latitude and longitude) of the contours( as shown
>> in red in the image). From this answer - https://stackoverflow.com/ques
>> tions/18304722/python-find-contour-lines-from-matplotlib-pyplot-contour/
>> will this give me what I am looking for or is there a scaling required to
>> latitude and longitude that I need to include?
>>
>> Best regards,
>> Ashwin.
>>
>> import numpy as np
>> def get_contour_verts(cn):
>>     contours = []
>>     # for each contour line
>>     for cc in cn.collections:
>>         paths = []
>>         # for each separate section of the contour line
>>         for pp in cc.get_paths():
>>             xy = []
>>             # for each segment of that section
>>             for vv in pp.iter_segments():
>>                 xy.append(vv[0])
>>             paths.append(np.vstack(xy))
>>         contours.append(paths)
>>
>>     return contours
>>
>>
>>
>> _______________________________________________
>> Matplotlib-users mailing list
>> Matplotlib-users at python.org
>> https://mail.python.org/mailman/listinfo/matplotlib-users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20171019/78c4c3eb/attachment-0001.html>


More information about the Matplotlib-users mailing list