Annotation of loncom/html/adm/help/tex/Authoring_Piecewise_Plot.tex, revision 1.1

1.1     ! bowersj2    1: \label{Authoring_Piecewise_Plot}
        !             2: Suppose you want to plot a piecewise function similar to the
        !             3: following:
        !             4: 
        !             5: \begin{verbatim}
        !             6: f(x) = a*x + b if (x < 4.5)
        !             7: f(x) = a*x     if (x >=4.5)
        !             8: \end{verbatim}
        !             9: 
        !            10: The following is the XML representation of a problem with a dynamic
        !            11: plot based on this. The work is done in a <script> block that
        !            12: generates the data sets used in the plot.
        !            13: 
        !            14: \begin{verbatim}
        !            15:  <script type="loncapa/perl" >
        !            16:  $a = &random(2,5,1);
        !            17:  $b = &random(3,6,1);
        !            18:  
        !            19:  for ($x = 0; $x<4.5; $x+= 0.05) {
        !            20:      push @X, $x;
        !            21:      push @Y, $a*$x + $b;
        !            22:  }
        !            23:  
        !            24:  for ($x = 4.5; $x<=10; $x+= 0.05) {
        !            25:      push @X, $x;
        !            26:      push @Y, $a*$x;
        !            27:  }
        !            28:  </script >
        !            29:  <gnuplot font="medium" width="500" grid="on" height="400" border="on" 
        !            30:           fgcolor="x000000" alttag="dynamically generated plot" align="center" 
        !            31:           bgcolor="xffffff" transparent="off" >
        !            32:      <curve linestyle="lines" pointsize="1" pointtype="1" color="x000000" 
        !            33:       name="">
        !            34:          <data >@X</data >
        !            35:          <data >@Y</data >
        !            36:      </curve >
        !            37:  </gnuplot >
        !            38: \end{verbatim}
        !            39: 
        !            40: The above script works, but it produces a plot like this:
        !            41: 
        !            42: \includegraphics{dynamic_piecewise}
        !            43: 
        !            44: A better solution is to use two seperate <curve> statements to plot
        !            45: two separate curves. So on the second piece of the function we use
        !            46: @X2 and @Y2 instead of @X and @Y. Then in the <gnuplot> tag we
        !            47: include a second <curve> sub-tag.
        !            48: 
        !            49: \begin{verbatim}
        !            50:  <script type="loncapa/perl" >
        !            51:  $a = &random(2,5,1);
        !            52:  $b = &random(3,6,1);
        !            53:  
        !            54:  for ($x = 0; $x<4.5; $x+= 0.05) {
        !            55:      push @X, $x;
        !            56:      push @Y, $a*$x + $b;
        !            57:  }
        !            58:  
        !            59:  for ($x = 4.5; $x<=10; $x+= 0.05) {
        !            60:      push @X2, $x;
        !            61:      push @Y2, $a*$x;
        !            62:  }
        !            63:  </script >
        !            64:  <gnuplot font="medium" width="500" grid="on" height="400" border="on" 
        !            65:           fgcolor="x000000" alttag="dynamically generated plot" align="center" 
        !            66:           bgcolor="xffffff" transparent="off" >
        !            67:      <curve linestyle="lines" pointsize="1" pointtype="1" color="x000000" 
        !            68:       name="" >
        !            69:          <data >@X</data >
        !            70:          <data >@Y</data >
        !            71:      </curve >
        !            72:      <curve linestyle="lines" pointsize="1" pointtype="1" color="x000000" 
        !            73:       name="" >
        !            74:          <data >@X2</data >
        !            75:          <data >@Y2</data >
        !            76:      </curve >
        !            77:  </gnuplot >
        !            78: \end{verbatim}
        !            79: 
        !            80: \includegraphics{dynamic_piecewise2}
        !            81: 
        !            82: This is still not a desirable result. Typically one wants an open
        !            83: circle or closed circle defining the domain of each
        !            84: piece. Unfortunately there is no easy way to do this in gnuplot
        !            85: currently. If this effect is desired, perhaps using a static image
        !            86: and a randomlabel problem would be a better approach. A second
        !            87: solution would be to add data which draws a circle to your curves.

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