Re: ListPlot & lots 'o dots.

*To*: mathgroup at smc.vnet.net*Subject*: [mg87797] Re: ListPlot & lots 'o dots.*From*: David Bailey <dave at Remove_Thisdbailey.co.uk>*Date*: Wed, 16 Apr 2008 22:35:51 -0400 (EDT)*References*: <fu4flb$nj7$1@smc.vnet.net>

Annetts729 wrote: > Hi, > > Apparently ListPlot has a quirk on my systems (XP SP2/3, 6.0.2) > > With test data > > test = Table[N@Sin[n \[Pi] x], {n, 1, 5, 1}, {x, -\[Pi], \[Pi], \ > [Pi]/50}]; > > ListPlot[test] produces a plot with lots 'o dots as expected. It's > easy to see which dots correspond to which frequency by connecting > points in each data set > > ListPlot[test, Joined->True] > > We can correct the ordinate scale using > > ListPlot[test, Joined->True, DataRange->{-\[Pi], \[Pi]}], and for > lots 'o plots this looks messy. > > Using SetOptions, we can set ListPlot up so that we don't need to > specify Joined & a data range every time we use ListPlot using > > SetOptions[ListPlot, DataRange -> {-\[Pi], \[Pi]}, Joined -> > True ]; > > We can confirm ListPlot's new settings either by removing the ";" or > using Options@ListPlot. > > For me this is where the problem starts. > > After an appropriate SetOptions (like above), ListPlot[test] should > give me a plots that is joined & has the correct ordinate scale. For > me it doesn't, despite Joined->True and DataRange, ListPlot[test] gets > ma a plot with lots 'o dots and the wrong scale. I know there's a > point to SetOptions since I can set (eg) a PlotRange and FrameLabels. > It's just that ListPlot (apparently) ignores DataRange & Joined so > that I have to specify them each time I use ListPlot. > > I'd like to know if this problem restricted to my system. In the > event that it can be reproduced, I'll report it as a bug. > > Tests. > test = Table[N@Sin[n \[Pi] x], {n, 1, 5, 1}, {x, -\[Pi], \[Pi], \[Pi]/ > 50}]; (* generate test data *) > ListPlot[test] (* plot w/ lots o dots *) > ListPlot[test, Joined -> True, DataRange -> {-\[Pi], \[Pi]}] (* > desired plot *) > SetOptions[ListPlot, DataRange -> {-\[Pi], \[Pi]}, Joined -> True, > FrameLabel -> {"Hi", "Lo"}, PlotRange -> {0, [Pi]/2}]; (* set default > options for ListPlot *) > ListPlot[test] (* dotty plot, incorrect ordinate but correct abscissa > & labels -- WTF? *) > > > Regards, > > Dave. > > > > > > It would seem that ListPlot is not responding to changed options! Although this is a bug, I would not recommend setting the options of built-in functions because it can cause confusion over time. A better approach is to define your own plotting function which calls ListPlot with the required options. David Bailey http://www.dbaileyconsultancy.co.uk