File:  [LON-CAPA] / loncom / html / adm / help / tex / Authoring_Dynamic_Plot.tex
Revision 1.1: download - view: text, annotated - select for diffs
Fri Jul 26 19:53:59 2002 UTC (21 years, 11 months ago) by bowersj2
Branches: MAIN
CVS tags: version_1_2_X, version_1_2_1, version_1_2_0, version_1_1_X, version_1_1_99_5, version_1_1_99_4, version_1_1_99_3, version_1_1_99_2, version_1_1_99_1, version_1_1_99_0, version_1_1_3, version_1_1_2, version_1_1_1, version_1_1_0, version_1_0_99_3, version_1_0_99_2, version_1_0_99_1, version_1_0_99, version_1_0_3, version_1_0_2, version_1_0_1, version_1_0_0, version_0_99_5, version_0_99_4, version_0_99_3, version_0_99_2, version_0_99_1, version_0_99_0, version_0_6_2, version_0_6, version_0_5_1, version_0_5, conference_2003, HEAD
.tex files from help.loncapa.org largely done. Added some lables to
older files. Last mega-massive .tex commit for a while.

    1: \label{Authoring_Dynamic_Plot}
    2: Dynamically generated plots are used to produce graphs which will be
    3: different for each student who views them. The plots are produced by
    4: calling 'gnuplot', and in fact the xml tag for the plots is <gnuplot>.
    5: 
    6: Dynamically generated plots should be used in conjunction with a perl
    7: script block which generates the data to be plotted. If you are using
    8: static data a dynamically generated plot is not appropriate because of
    9: the overhead associated with generating the plot. In that case, use a
   10: picture (see \ref{Authoring_Adding_Pictures}).
   11: 
   12: There are a great deal of parameters that can be set for a plot. These
   13: parameters are accessed by including various sub-tags. By default only
   14: the <gnuplot > tag and <curve > tag are present in a plot. The
   15: sub-tags allow you to define the axes of the plot, the presence of a
   16: key, the placement of gridlines, and the title and legends on the
   17: plot. The example given below shows the use of the <axis > sub-tag to
   18: set the domain and range shown in the graph. 
   19: 
   20: Below is an example which produces a simple plot. To use it, create a
   21: new problem and \textbf{Edit XML}. Remove all of the text and replace 
   22: it with the text below: 
   23: 
   24: \begin{verbatim}
   25: 
   26:  <problem >
   27:  <script type="loncapa/perl" >
   28:  $amplitude = &random(3,5,1);
   29:  for ($x=-6.0; $x<=6.0; $x+=0.05) {
   30:      push @X,$x;
   31:      push @Y, $amplitude * sin($x);
   32:  }
   33:  </script >
   34:  <gnuplot font="medium" width="400" grid="on" 
   35:       height="300" border="on" fgcolor="x000000" 
   36:       alttag="dynamically generated plot" align="center"  
   37:       bgcolor="xffffff" transparent="off" >
   38:      <axis ymin="-6.0" ymax="6.0" xmin="-5.0" 
   39:            xmax="5.0" color="x000000" /> 
   40:      <curve 
   41:           linestyle="lines"
   42:           pointtype="1"
   43:           pointsize="1"
   44:           name=""
   45:           color="x000000" >
   46:          <data >@X</data >
   47:          <data >@Y</data >
   48:      </curve >
   49:  </gnuplot >
   50:  <startouttext /><br />
   51:  What is the amplitude of this function?
   52:  <endouttext />
   53:  <numericalresponse answer="$amplitude" >
   54:  <responseparam type="tolerance" default="5%" name="tol" 
   55:       description="Numerical Tolerance" />
   56:  <responseparam name="sig" type="int_range,0-16" default="0,15"  
   57:       description="Significant Figures" />
   58:  </numericalresponse >
   59:  </problem >
   60: 
   61: \end{verbatim}
   62: 
   63: Below is a screenshot (in construction space) of the resulting plot.
   64: 
   65: \includegraphic{dynamic_plot}
   66: 
   67: It's likely that the above plot doesn't quite look right. It would be
   68: nice to have the gridlines drawn every 1 unit instead of every 2
   69: units. A title, and labels on the axes, would be a nice
   70: addition. Although it's overkill for this example, we can also add a
   71: key for the plot. We can accomplish these changes by inserting
   72: sub-tags into the <gnuplot > tag. 
   73: 
   74: Gridlines can be set using the <xtics > and <ytics > tags. The names
   75: of these tags correspond to the names of the commands used in
   76: gnuplot. We specify the beginning, end, and increment of the tick
   77: marks. Gnuplot only puts gridlines on the tick marks. 
   78: 
   79: Inserting the <title >, <xlabel >, and <ylabel > commands allows us to
   80: set the title and axes labels as one would expect. Inserting a <key >
   81: tag, but not changing any of the information in it, signals gnuplot to
   82: place a key in the graph. If we decide we don't want the key, deleting
   83: the <key > tag will remove it from the graph. 
   84: 
   85: These changes in the xml are shown below and a screenshot of the new
   86: plot is provided as well. 
   87: 
   88: \begin{verbatim}
   89: 
   90:  <problem >
   91:  <script type="loncapa/perl" >
   92:  $amplitude = &random(3,5,1);
   93:  for ($x=-6.0; $x<=6.0; $x+=0.05) {
   94:      push @X,$x;
   95:      push @Y, $amplitude * sin($x);
   96:  }
   97:  </script >
   98:  <gnuplot font="medium" width="400" grid="on" height="300" 
   99:        border="on" fgcolor="x000000" 
  100:        alttag="dynamically generated plot" 
  101:        align="center" bgcolor="xffffff" transparent="off" >
  102:      <key title="" pos="top right" box="off" />
  103:      <ylabel >Y</ylabel >
  104:      <xlabel >X</xlabel >
  105:      <title >A sample plot</title >
  106:      <xtics end="5.0" location="border" start="-5.0" 
  107:             increment="1.0" mirror="on" />
  108:      <ytics end="6.0" location="border" start="-6.0" 
  109:             increment="1.0" mirror="on" />
  110:      <axis ymin="-6.0" ymax="6.0" xmin="-5.0" 
  111:             xmax="5.0" color="x000000" /> 
  112:      <curve linestyle="lines" pointtype="1" pointsize="1" name="f(x)"   
  113:          color="x000000">
  114:          <data >@X</data >
  115:          <data >@Y</data >
  116:      </curve >
  117:  </gnuplot >
  118:  <startouttext />
  119:  <br />
  120:  What is the amplitude of this function?
  121:  <endouttext />
  122:  <numericalresponse answer="$amplitude" >
  123:  <responseparam type="tolerance" default="5%" name="tol" 
  124:       description="Numerical Tolerance" />
  125:  <responseparam name="sig" type="int_range,0-16" default="0,15"  
  126:       description="Significant Figures" />
  127:  </numericalresponse > 
  128:  </problem >
  129: 
  130: \end{verbatim}
  131: 
  132: \includegraphics{dynamic_plot2}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>