RE: graphics question
- To: mathgroup@smc.vnet.net
- Subject: [mg12500] RE: [mg12414] graphics question
- From: Ersek_Ted%PAX1A@mr.nawcad.navy.mil
- Date: Tue, 19 May 1998 13:32:02 -0400
Tom wrote:
|
|Suppose I am using Mathematica to create test questions for my high
|school math students. Here is a simple question. |
|Use the grid below to draw the graph of y = 2x - 4 |
|Now, I can create a really nice grid (using simple grid, available from
|Mathsource) and I can easily plot this graph to create the answer, but
|is there any way to create a "blank" set of gridlines that will be
|identical to the gridlines Mathematica will create for the plot? The
|idea would be to provide students with a grid to put their answer on,
|and have that match the output Mathematica will create. |
|I tried plotting the graph with a color of White, but for the
observant, |you can see where the invisible line crosses the gridlines!
(connect |the dots and you have the answer!)
|
|Plot[2x-4, {x, -5,5}, GridLines->Automatic] |
|Plot[2x-4, {x, -5,5}, GridLines->Automatic, PlotStyle->{GrayLevel[1]}]
|
|I would be looking for a solution that would work for more complicated
|functions to graph as well, this was just a simple illustration. |
I have good new and bad news. The good news is that we can get what you
want. The bad news is that you have to do a lot of work if you are
particular about what the results look like.
The following does much of what you want with built-in features.
In[1]:=
grid=ListPlot[{{-6,-6},{6,6}},PlotStyle->PointSize[0.],
GridLines->Automatic]
Out[1]=
-Graphics deleted-
But I don't like the graphic above very much. The grid lines go through
the numbers, and the gridlines stick out on the edges. In the lines
below I change this into a graphic I like better.
If you want to control the nitty gritty details as I do below, I
recommend that you purchase "The Mathematica Graphics Guidebook" by
Cameron Smith and Nancy Blachman
__________________________________
FullGraphics gives all the lower level primitives used to make the
graphic above.
In[2]:=
g1=FullGraphics[grid];
Note: Evaluate InputForm[g1] to see g1 in all it's glory.
Now I need to find the expression used to make the numbers.
In[3]:=
Position[g1,Text]
Out[3]=
{{1,2,16,0},{1,2,18,0},{1,2,20,0},{1,2,22,0},{1,2,24,0},{1,2,26,0},
{1,2,47,0},{1,2,49,0},{1,2,51,0},{1,2,53,0},{1,2,55,0},{1,2,57,0}}
In[4]:=
g1[[1,2,18]]
Out[4]=
Text[-4,{-4.,-0.25484},{0.,1.}]
Next I find the expression used to make the grid.
In[5]:=
Position[g1,Line]
Out[5]=
-Long Output deleted-
In[6]:=
g1[[1,2,76,3]]
Out[6]=
Line[{{0.,-6.3},{0.,6.3}}]
In[7]:=
g1[[1,2,45,3]]
Out[7]=
Line[{{-6.3,0.},{6.3,0.}}]
Now I know what expressions in (g1) need to be changed, and I can use
replacement rules to change the grid lines and the numbers.
In[8]:=
g2=g1/.
{Text[str_,{x_,y_},{0.,1.}]->Text[str,{x,y},{0.,0.6},
Background->Automatic],
Text[str_,{x_,y_},{1.,0.}]->Text[str,{x,y},{1.,0.},
Background->Automatic],
Line[{{-6.3,y_},{6.3,y_}}]->Line[{{-6.,y},{6.,y}}],
Line[{{x_,-6.3},{x_,6.3}}]->Line[{{x,-6.},{x,6.}}] }
Out[8]=
-Graphics-
In[7]:=
Show[g2]
Out[7]=
-Graphics deleted-
I like the graphic above much better. If anyone knows know of an easier
way to control details like I did above please let me know.
Ted Ersek