Plotting with dotted lines solved (Re: plotting with dotted lines, not dashed)
- To: mathgroup at smc.vnet.net
- Subject: [mg104537] Plotting with dotted lines solved (Re: [mg104341] plotting with dotted lines, not dashed)
- From: Robert Rosenbaum <robertr at math.uh.edu>
- Date: Tue, 3 Nov 2009 02:55:42 -0500 (EST)
- References: <200910280908.EAA14383@smc.vnet.net>
I put together a way to make proper dotted plots. Thanks to everyone for the help, especially to Maxim whose e-mail helped me put together the solution below. Just to review the issue: - The PlotStyle option Dotted or Dashing[{0,r}] makes small (rectangular) dashes as opposed to circular dots. This appears to be contrary to what the help file in 7.0.1 claims. - Using ListPlot or using the Mesh and MeshStyle option in Plot produce unevenly spaced dots. To produce a proper dotted plot, I defined the following function: DotPlot[f_, x_, xrange_, yrange_, aspratio_, npts_, ptsize_, style_, opts_] := Plot[f, {x, xrange[[1]], xrange[[2]]}, PlotRange -> {xrange, yrange}, Mesh -> npts, MeshStyle -> Append[style, AbsolutePointSize[ptsize]], PlotStyle -> None, AspectRatio -> aspratio, MeshFunctions -> Function[{u, v}, Sqrt[( u/(xrange[[2]] - xrange[[1]]))^2 + aspratio^2 (v/(yrange[[2]] - yrange[[1]]))^2]], opts] The arguments should be self-explanatory. For example, try DotPlot[x/(1 + x), x, {0, 25}, {0, 1}, 1/GoldenRatio, 25, 5, {Blue}, {}] Now compare the plot above to: Plot[x/(1 + x), {x, 0, 25}, PlotStyle -> {Thick, Dotted}, PlotRange -> {0, 1}] or: ListPlot[Table[{x, x/(1 + x)}, {x, 0, 25}], PlotStyle -> {Blue, AbsolutePointSize[5]}, PlotRange -> {0, 1}] The function DotPlot could be improved on, for example, if one could access PlotRange and AspectRatio inside the call to Plot (so that Automatic options could be used). How would one access the local value of PlotRange or AspectRatio within a call to Plot? I'm sure there's a way. On Oct 28, 2009, at 4:08 AM, Robert Rosenbaum wrote: > I need to plot a function with a dotted line for a figure to be > published. As you may know PlotStyle->Dotted simply makes a dashed > line with small dashes. Since I already have a dashed line in the > figure, I would prefer an actual dotted line for this function. > > I tried ListPlot with PlotMarkers set to discs, but these get spaced > according to the grid in the list I send to ListPlot. In order to > space them equally like Dashed does, I'd have to make a non-uniform > grid that depends on the derivative of my function (which I don't have > a closed form for). > > Surely there is a reasonable way to plot with a dotted line, right? > Any ideas? > > > Best, > Robert > > > > > > Best, Robert