Annotation of loncom/html/adm/help/tex/Authoring_Dynamic_Plot.tex, revision 1.1
1.1 ! bowersj2 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>