Re: ListContourPlot sometimes leaves out requested contours

*To*: mathgroup at smc.vnet.net*Subject*: [mg14054] Re: [mg14016] ListContourPlot sometimes leaves out requested contours*From*: "Jens-Peer Kuska" <kuska at linmpi.mpg.de>*Date*: Fri, 18 Sep 1998 03:50:36 -0400*Sender*: owner-wri-mathgroup at wolfram.com

Hallo Adalbert, read the manual !!! Did You ever hear about the PlotRange-option? Your "bug" dissapears when You use the command cplt=ListContourPlot[list3,Contours->{7.0,7.50,7.75},PlotRange->All]; Without this option Mathematica choose a z-Range that ends at z=7.5 and so the contour line not drawn because it is outside the z-range. It may be inconsistent to use the PlotRange->Automatic when explicit z-values are given but it is not a bug -- it is a feature. Regards Jens -----Original Message----- From: Adalbert Hanszen <hsse at amath01.amath.zeiss.de> To: mathgroup at smc.vnet.net Subject: [mg14054] [mg14016] ListContourPlot sometimes leaves out requested contours >Hello, Mathematica users! > >The following problem arises with Mathematica 2.2 for X-Windows, with >Mathematica 2.2.3 for MS-Windows 3.x and for Mathematica 3.0.1 on >Windows-NT. Perhaps, it is present in all versions on all platforms. > >ListContourPlot has an option Contours to select which contours shall be >drawn. Using > > Contours->{z1,z2,...} > >I experienced cases, where one or more contour lines were not drawn, >although they should show up. (In the examples which I have >investigated, they were missing around a local maximum totally within >the rectangle to be displayed and totally surrounded by a lower contour >line.) The funny thing is, that by leaving out one row of data points, >sometimes the missing contour line is drawn! - See the example below. > >A similar question (in essence) was rised on June 26, 1997 in this >group, but there was only a single "Re" telling, that one has observed >similar things without being able to always reproduce it. The problem >itself was not solved, I think it was not really brought to the point. > >1.) Can anybody enlighten us with the internals of ListContourPlot? > >2.) Does anybody know, how ListContourPlot searches starting points for >the contours to be displayed? > >3.) Does the used searching algorithm guarantee, if there are >neighbouring data points on the grid zLow, zHigh such that >zLow<zContour<=zHigh or zLow<=zContour<zHigh where zContour is one of >the requested contour line from Contours->..., that a contour line for >zContour is found and displayed between the neighbouring points? > >The basic problem seems to be, to find *all* places f(z)=zContour for a >sufficiently continuous function f interpolating the data points. This >problem is non-trivial for the one dimensional case (but not, if f is >piecewise linear or quadratic). As the contour lines belong to some >interpolating function (maybe defined through the smoothed contour >lines), at least all contour lines for the conditions mentioned above >should be found! > >4.) If the search starts with an initial set of starting points less >than the given data points: how can I increase the size of this set? >There is no option PlotPoints in ListContourPlot (it would not be >necessary. I also find no option to influence the kind of interpolation >used for display other than smoothing). > >5.) Would it be possible to Unprotect[...] and redefine the relavant >subfunction of ListContourPlot to exchange the current search algorithm >used in ListContourPlot by a better one? > >6.) has anybody out there a better ListContourPlot than the built-in >one? > >The problem probably also explains, why LabelContourLines in TWJ-Packs >sometimes puts the wrong numbers at some lines. I have not yet gone >into this in full depth. > >Here is a practical example which arose in my work: > >list1=Get["list1",StandardForm]; > >list2=Table[list1[[i]],{i,1,14}]; >(* watch at line 6: all requested contour lines are shown....*) >ListContourPlot[list2,Contours->{7.0,7.50,7.75}]; ListPlot[list2[[6]]]; > >(* But now: just add one line of data points far away at the top... *) >list3=Table[list1[[i]],{i,1,15}]; >(* the 7.75-contour line is not shown, although > it should be there between the 12/13 and > between the 16/17-th data point!... *) >ListContourPlot[list3,Contours->{7.0,7.50,7.75}]; ListPlot[list3[[6]]]; > > >The example data list1 are given at the very end. > >Thanks for your help > >Dipl-Math. Adalbert Hanszen <hsse at amath01.amath.zeiss.de> >