Re: Plotting with dotted lines solved (Re:
- To: mathgroup at smc.vnet.net
- Subject: [mg104792] Re: [mg104537] Plotting with dotted lines solved (Re: [mg104341]
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Tue, 10 Nov 2009 05:59:02 -0500 (EST)
- References: <200910280908.EAA14383@smc.vnet.net>
- Reply-to: drmajorbob at yahoo.com
This makes an inferior plot to yours, but it does access the "local"
PlotRange and AspectRatio (if I understand what that means):
DotPlot[f_, x_, xrange_, yrange_, aspratio_, npts_, ptsize_, style_,
opts_] :=
With[{p =
Plot[f, {x, xrange[[1]], xrange[[2]]}, Mesh -> npts,
MeshStyle -> Append[style, AbsolutePointSize[ptsize]],
PlotStyle -> None,
MeshFunctions ->
Function[{u, v},
Sqrt[(u/(xrange[[2]] - xrange[[1]]))^2 +
aspratio^2 (v/(yrange[[2]] - yrange[[1]]))^2]], opts]},
Print@AbsoluteOptions[p, {PlotRange, AspectRatio}];
p
]
DotPlot[x/(1 + x), x, {0, 25}, {0, 1},
1/GoldenRatio, 25, 5, {Blue}, {}]
{PlotRange->{{0.,25.},{0.596575,0.961538}},AspectRatio->0.618034}
I'm not sure what you planned to do with that information, however.
Bobby
On Tue, 03 Nov 2009 01:55:42 -0600, Robert Rosenbaum <robertr at math.uh.edu>
wrote:
> 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
>
>
>
>
>
>
--
DrMajorBob at yahoo.com