From: telefunkenvf14 on
Mathgroup:

I am currently able to construct a manipulatable plot of a supply and
demand diagram that includes custom tick marks, set to dynamically
display the current equilibrium price and quantity.

Question: Can someone explain how to add an additional set of custom
tick marks that display 'lower' (on the x axis) and 'to the left' (on
the y axis) of my 'main' tick marks, so I don't have tick-mark
collisions?

(FYI, the second set of tick marks would be linked to shifted copies
of the original demand and supply curves. So far, the best workaround
I've come up with is to use conditional statements, such as Which[] or
nested If[], to switch the additional tick marks on or off based on
proximity to my 'main' ticks.)

Any help, or other creative ideas, would be greatly appreciated.

-RG

From: telefunkenvf14 on
On Mar 31, 5:26 am, telefunkenvf14 <rgo...(a)gmail.com> wrote:
> Mathgroup:
>
> I am currently able to construct a manipulatable plot of a supply and
> demand diagram that includes custom tick marks, set to dynamically
> display the current equilibrium price and quantity.
>
> Question: Can someone explain how to add an additional set of custom
> tick marks that display 'lower' (on the x axis) and 'to the left' (on
> the y axis) of my 'main' tick marks, so I don't have tick-mark
> collisions?
>
> (FYI, the second set of tick marks would be linked to shifted copies
> of the original demand and supply curves. So far, the best workaround
> I've come up with is to use conditional statements, such as Which[] or
> nested If[], to switch the additional tick marks on or off based on
> proximity to my 'main' ticks.)
>
> Any help, or other creative ideas, would be greatly appreciated.
>
> -RG

Well, I played around and something like this works, but I'd still be
interested in suggestions for improvement. One idea I haven't yet
tried to implement: a Checkbox[ ] to show or hide sets of ticks. Could
someone help with that?

(*First, a couple of convenience functions called by the plotting
routine*)

inverseLinear[name_,priceVariable_,a_,b_,shift_]:=
(
priceVariable==(a+shift)+ b*name
)

linearMarket[name_,priceVariable_,s0_,s1_,d0_,d1_,sShift_,dShift_]:=
{
name-> -((-d0-dShift+s0+sShift)/(-d1+s1)),
priceVariable-> -((-d1*s0+d0*s1+dShift*s1-d1*sShift)/(d1-s1))
}

(*Here's my Plot[ ]*)

linearMarketPlot[name_,priceVariable_,s0_,s1_,d0_,d1_,sShift_,dShift_]:=
Module[ {marketTitleName,sols1,sols2,eqY1,eqY2,eqP1,eqP2},
marketTitleName =
MapAt[ToUpperCase[#1]&,Characters[ToString[name]],1]//StringJoin;
sols1=linearMarket[name,priceVariable,s0,s1,d0,d1,0,0]//N;
eqY1=sols1[[1,2]];
eqP1=sols1[[2,2]];

sols2=linearMarket[name,priceVariable,s0,s1,d0,d1,sShift,dShift]//N;
eqY2=sols2[[1,2]];
eqP2=sols2[[2,2]];
Plot[
{inverseLinear[name,priceVariable,s0,s1,sShift]
[[2]],inverseLinear[name,priceVariable,s0,s1,0][[2]],
inverseLinear[name,priceVariable,d0,d1,dShift]
[[2]],inverseLinear[name,priceVariable,d0,d1,0][[2]]},{name,0,d0*1.1},
AxesOrigin->{0,0},
PlotRange->{0,d0*1.2},
PlotStyle-
>{Directive[Thick,Dashed,Darker[Blue]],Directive[Thick,Darker[Blue]],
Directive[Thick,Dashed,Purple],Directive[Thick,Purple]},
PlotLabel->Style[marketTitleName<>" Market",FontFamily-
>"Calibri",Bold,14],
AxesLabel->{name,priceVariable},
Ticks->
{
{{eqY1,"\!\(\*SubscriptBox[\"q\", \"1\"]\)"<>" =
"<>ToString[NumberForm[eqY1,{10,2}]]},{eqY2,"\<\n\!\(\) \>
"<>ToString[NumberForm[eqY2,{10,2}]]}},
{{eqP1,"\!\(\*SubscriptBox[\"p\", \"1\"]\)"<>" =
"<>ToString[NumberForm[eqP1,{10,2}]]},{eqP2,ToString[NumberForm[eqP2,
{10,2}]]}}
},
TicksStyle->Directive[9,Thin],
LabelStyle->{FontFamily->"Calibri",Bold,12},
Prolog->
{
{Thick,Lighter(a)Gray,Dotted,Line[{{eqY1,0},
{eqY1,eqP1}}]},
{Thick,Lighter(a)Gray,Dotted,Line[{{0,eqP1},
{eqY1,eqP1}}]},
{Thick,Gray,Dotted,Line[{{eqY2,0},{eqY2,eqP2}}]},
{Thick,Gray,Dotted,Line[{{0,eqP2},{eqY2,eqP2}}]}
},
Epilog->
{
{PointSize[0.025],Point[{eqY2,eqP2}]},
{PointSize[0.025],Point[{eqY1,eqP1}]}
}
]
]

(*Here is an example Manipulate[ ]*)

DynamicModule[{sShift, dShift},
Manipulate[linearMarketPlot[apples, p, 1, 1, 100, -1, sShift,
dShift],
{{sShift, 0, "Supply Shift"}, -50, 50},
{{dShift, 0, "Demand Shift"}, -50, 50},
TrackedSymbols :> {sShift, dShift}
]
]

 | 
Pages: 1
Prev: DensityPlot3D ?
Next: Contexts and Block