Re: Scale ContourPlot axes
- To: mathgroup at smc.vnet.net
- Subject: [mg67404] Re: [mg67393] Scale ContourPlot axes
- From: "Carl K. Woll" <carlw at wolfram.com>
- Date: Thu, 22 Jun 2006 06:21:21 -0400 (EDT)
- References: <200606210613.CAA08944@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Nick wrote:
> Hi there,
>
> I have a ContourPlot with axes of parameters "a" and "b" and contours
> of a function "f". Obviously the parameters, "a" and "b" are varied
> within defined boundary conditions to calculate "f".
>
> My question: Is it possible to convert the axes to a log scale (within
> ConoutPlot) while maintaining the normal values of these parameters,
> ie. scale the linear axes to a log scale without converting to log
> units?
>
> I haven't been able to find a way of acheiving this and would really
> appreciate any ideas out there.
>
> Nick
You need to do the scaling by hand, using FrameTicks. Here is a simple
example:
f[x_,y_]:=x^2+Log[y]^2
Let's plot this over the range -3<x<3 and Exp[-3]<y<Exp[3] so that we
get a nice circle.
xmin=-3;
xmax=3;
ymin=Exp[-3];
ymax=Exp[3];
Now, we want to use ContourPlot with Log scaling. So
ContourPlot[f[x, 10^z],{x,xmin,xmax},{z,Log[10,ymin],Log[10,ymax]}]
will produce the desired plot, but with ticks labeled using the log
scale. We fix the ticks by using FrameTicks. Here is a function that
produces a table of {linear,log} values:
tickfunction[min_,max_]:=
Flatten[
N@Table[
{e+Log[10,d],d 10^e},
{e,Floor[Log[10,min]],Ceiling[Log[10,max]]},
{d,1,5,4}
],
1
]
So, the following produces the desired plot:
ContourPlot[f[x,10^z],{x,xmin,xmax},{z,Log[10,ymin],Log[10,ymax]},
FrameTicks->{Automatic,tickfunction[ymin,ymax]}]
Carl Woll
Wolfram Research
- References:
- Scale ContourPlot axes
- From: "Nick" <nick.dale.burns@gmail.com>
- Scale ContourPlot axes