Re: Extracting points from a contour plot

*To*: mathgroup at smc.vnet.net*Subject*: [mg90408] Re: Extracting points from a contour plot*From*: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>*Date*: Tue, 8 Jul 2008 07:48:12 -0400 (EDT)*Organization*: The Open University, Milton Keynes, UK*References*: <g4v34e$ihi$1@smc.vnet.net>

ajfriend at gmail.com wrote: > I'm using ContourPlot to plot the curve of zeros of a function of two > variables within a range of vales (0 < x < 1, 0 < y < 1). Now, what I > really want is the list of points that it generates. I've tried > playing with Solve and NSolve, but these are either not working or are > taking too long. What is the easiest way of getting at the list of > points that ContourPlot has generated? Do I have to do something like > InputForm[%] and then cut and paste the list that I want, or is there > some easier way of doing it? > > Or, maybe there is a way of getting the points that I want without > using ContourPlot that I haven't come across yet, or maybe I'm just > not using Solve correctly. Say we want to investigate the following equation. Looking at the *FullForm* of the graph, we can see that the points computed by ContourPlot are the first element (list of lists) of a GraphicsComplex structure. We use *Cases* to extract the list of pairs and check that the sampled points are indeed roots of the equation. (Note that we can also use *Reduce* to get a set of analytic solutions.) g = ContourPlot[Cos[x] + Cos[y] == 0, {x, 0, 2 Pi}, {y, 0, 2 Pi}] FullForm[g] pts = First@Cases[g, x_GraphicsComplex :> First[x]] MapThread[Chop[Cos[#1] + Cos[#2]] == 0 &, Transpose@pts] Reduce[Cos[x] + Cos[y] == 0 && 0 <= x <= 2 Pi && 0 <= y <= 2 Pi, {x, y}] Regards, -- Jean-Marc