On Thu, May 21, 2009 at 9:31 PM, Ondrej Certik <ond...@certik.cz> wrote:
> Hi,
>
> I have a set of vertices in 2D as triples (x, y, val), where the x, y
> are 2D coordinates and "val" is the scalar value of the finite element
> solution, here is an example:
>
> In [54]: l.get_vertices()
> Out[54]:
> array([[  0.00000000e+00,  -1.00000000e+00,  -2.22396971e-17],
>       [  1.00000000e+00,  -1.00000000e+00,  -1.64798730e-17],
>       [ -1.00000000e+00,   0.00000000e+00,   8.09899023e-17],
>       ...,
>       [  1.48437500e-01,  -1.56250000e-02,   1.62359362e-01],
>       [  1.32812500e-01,   0.00000000e+00,   1.56012622e-01],
>       [  1.32812500e-01,  -1.56250000e-02,   1.50562411e-01]])
>
>
> and I also have a set of triangles that connect those points, here is
> an example:
>
> In [55]: l.get_triangles()
> Out[55]:
> array([[   3, 5448,   29],
>       [  27, 5445,   28],
>       [  29,   28,   26],
>       ...,
>       [5499, 5498, 5479],
>       [5510, 5493, 5491],
>       [5513, 5508, 5491]], dtype=int32)
>
>
> The triangles define the 2D domain. What is the best way to get this
> plotted with mpl? Should I write a loop using the "plot" command, or
> is there a better alternative? So far, I am using the contour command
> and I feed it just with the vertices, here is the code:

The best way is to define your triangles as an n length list of
triangle vertices

  verts = [ ( (x00, y00), (x01, y01),  (x02, y02)),
                 (x10, y10), (x11, y11),  (x12, y12)),
                 ...
    ]

and have an equal length array of intensities for color mapping.

  vals = np.array(N_color_intensities)

Then create a PolyCollection:

  import matplotlib.cm as cm
  import matplotlib.collections as collections
  col = collections.PolyCollection(verts)
  col.set_array(val)
  col.set_cmap(cm.hot)
  ax.add_collection(col)

add_collection doesn't get the autoscaling limits, if I recall
correctly, so you will probably want to do

  ax.set_xlim(xmin, xmax)
  ax.set_ylim(ymin,. ymax)

See also:

  
http://matplotlib.sourceforge.net/api/collections_api.html#matplotlib.collections.PolyCollection
  http://matplotlib.sourceforge.net/search.html?q=codex+PolyCollection


Unfortunately, we do not currently have support for interpolating
between adjacent polys in a PolyCollection, so the result may not look
as nice as mayavis.

JDH

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to