Difference between revisions of "DynamicImages"
m (1 revision: import all default namespace pages from old wiki) |
(added historical tag and gave updated problem link) |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | <h2>Dynamically Generated Graphs: PG Code Snippet</h2> |
||
+ | {{historical}} |
||
+ | |||
+ | <p style="font-size: 120%;font-weight:bold">This problem has been replaced with [https://openwebwork.github.io/pg-docs/sample-problems/Algebra/DynamicGraph.html a newer version of this problem]</p> |
||
+ | ==Dynamically Generated Graphs: PG Code Snippet== |
||
<p style="background-color:#eeeeee;border:black solid 1px;padding:3px;"> |
<p style="background-color:#eeeeee;border:black solid 1px;padding:3px;"> |
||
Line 72: | Line 75: | ||
<p> |
<p> |
||
We can specify that images in the web browser's cache not be used by inserting <code>$refreshCachedImages=1;</code> It may be advantageous to use <code>$gr->gifName($gr->gifName()."-$newProblemSeed");</code> to give graphics files names unique to each problem seed. |
We can specify that images in the web browser's cache not be used by inserting <code>$refreshCachedImages=1;</code> It may be advantageous to use <code>$gr->gifName($gr->gifName()."-$newProblemSeed");</code> to give graphics files names unique to each problem seed. |
||
+ | </p> |
||
+ | <p> |
||
+ | If you want to increase the number of points plotted, you can access the first function added to the graph and set the number of points to 200 using <code>($gr->fn)[0]->steps(200);</code> |
||
</p> |
</p> |
||
</td> |
</td> |
||
Line 84: | Line 90: | ||
$BR |
$BR |
||
(Click on graph to enlarge) |
(Click on graph to enlarge) |
||
− | $BCENTER |
||
+ | $ECENTER |
||
END_TEXT |
END_TEXT |
||
</pre> |
</pre> |
||
Line 90: | Line 96: | ||
<p> |
<p> |
||
<b>Main Text:</b> |
<b>Main Text:</b> |
||
− | [[StaticImages|Images]] are included in the text section of the problem with the <code>image</code> command, and <code>insertGraph</code> inserts the dynamically generated graph. The <code>width</code> and <code>height</code> options specify the width and height of the image as it is to be displayed on the web page. They may be omitted to give the default sizes. If they (or the defaults) specify a size smaller than that specified in the <code>init_graph</code> command, it's a good idea to include a note that clicking on the graph will produce a larger version. The <code>tex_size</code> option specifies a scalar multiplier that will be applied to the graph size (as a percent times 10) when the graph is typeset in a hardcopy. Thus <code>tex_size=>800</code> specifies that the graph will be included at 80 percent of its full size in the hardcopy. |
+ | [[StaticImages|Images]] are included in the text section of the problem with the <code>image</code> command, and <code>insertGraph</code> inserts the dynamically generated graph. The <code>width</code> and <code>height</code> options specify the width and height of the image as it is to be displayed on the web page. They may be omitted to give the default sizes. If they (or the defaults) specify a size smaller than that specified in the <code>init_graph</code> command, it's a good idea to include a note that clicking on the graph will produce a larger version. The <code>tex_size</code> option specifies a scalar multiplier that will be applied to the graph size (as a percent times 10) when the graph is typeset in a hardcopy. Thus <code>tex_size=>800</code> specifies that the graph will be included at 80 percent of its full size in the hardcopy. |
+ | </p> |
||
+ | <p> |
||
+ | To help people who use screen readers, it is helpful to include alternate text for images. For instance, you could use <code>image(..., extra_html_tags=>'alt="graph of an upward opening parabola with vertex x = $x0."')</code>. |
||
</p> |
</p> |
||
</td> |
</td> |
||
Line 196: | Line 202: | ||
</tr> |
</tr> |
||
</table> |
</table> |
||
+ | |||
+ | == References== |
||
<p style="text-align:center;"> |
<p style="text-align:center;"> |
||
[[IndexOfProblemTechniques|Problem Techniques Index]] |
[[IndexOfProblemTechniques|Problem Techniques Index]] |
||
</p> |
</p> |
||
+ | |||
+ | |||
+ | <ul> |
||
+ | <li>POD documentation: [http://webwork.maa.org/pod/pg/macros/PGgraphmacros.html PGgraphmacros.pl]</li> |
||
+ | <li>PG macro: [https://github.com/openwebwork/pg/blob/master/macros/PGgraphmacros.pl]</li> |
||
+ | </ul> |
||
+ | |||
+ | |||
+ | <ul> |
||
+ | <li>POD documentation: [http://webwork.maa.org/pod/pg/lib/WWPlot.html WWPlot.pm]</li> |
||
+ | <li>PG library file: [https://github.com/openwebwork/pg/blob/master/lib/WWPlot.pm]</li> |
||
+ | </ul> |
||
+ | |||
[[Category:Problem Techniques]] |
[[Category:Problem Techniques]] |
Latest revision as of 08:29, 29 June 2023
This problem has been replaced with a newer version of this problem
Dynamically Generated Graphs: PG Code Snippet
This code snippet shows the essential PG code to include dynamically generated graphs in a problem. Note that these are insertions, not a complete PG file. This code will have to be incorporated into the problem file on which you are working.
For some examples of dynamically generated graphs in tables, see GraphsInTables
Note that in the following we consider first a very simple example that shows the basics of including a dynamically generated graph, and then, below that, a couple of more complicated examples that demonstrate some of the additional features of the graph macros.
PG problem file | Explanation |
---|---|
loadMacros("PGgraphmacros.pl"); |
Initialization:
We need to load |
$gr = init_graph(-1,-1,4,4, axes=>[0,0], grid=>[5,5], size=>[400,400] ); add_functions($gr, "x^2/4 for x in <-1,4>" . " using color:blue and weight:2"); |
Setup:
We create a graph object by calling
We add functions the graph with <i>function</i> for x in <i>range</i> using color:<i>colorname</i> and weight:<i>numericalweight</i>
The function should be given as a function of x, and should be written with
The range specified is given as a mathematical interval: that is, specifying a square bracket ( Finally, colorname and numericalweight are what we would expect: the name of the color to graph the function, and the weight of the curve used. The default weight is two, and the default color is black. Other good values for colorname include blue, green, red, gray, and orange.
We can specify that images in the web browser's cache not be used by inserting
If you want to increase the number of points plotted, you can access the first function added to the graph and set the number of points to 200 using |
BEGIN_TEXT $BCENTER \{ image( insertGraph($gr), width=>200,height=>200,tex_size=>800 ) \} $BR (Click on graph to enlarge) $ECENTER END_TEXT |
Main Text:
Images are included in the text section of the problem with the
To help people who use screen readers, it is helpful to include alternate text for images. For instance, you could use |
In addition to this basic graph insertion, we can do more interesting things as well: for example, we can specify the size of the image in the hardcopy that a student can print out, the size of the image when viewed on screen, and extra HTML tags to use when displaying the image on the screen. In addition, there are cases where we want to leave off the default graph labeling, which is also easily done. We can decorate images with labels, lines and points as well.
PG problem file | Explanation |
---|---|
loadMacros("PGgraphmacros.pl"); |
We include |
$gr1 = init_graph(-1,-1,4,4,axes=>[0,0],grid=>[5,5]); $gr2 = init_graph(-1,-1,4,4,axes=>[0,0],size=>[150,150]); $gr2->lb('reset'); add_functions($gr1, "sin(x) for x in <-1,4> using color:black and weight:2"); add_functions($gr2, "2*x for x in <-1,4> using color:green and weight:2", "-x for x in <-1,4> using color:red and weight:2"); |
To illustrate a couple of different features of dynamically generated graphs, we create two new graph objects in the problem set-up section of the file:
For the graph object
Then, for the graph object
Next, we remove all of the default labels and tick marks from the graph object
And we add functions to all three graphs with |
BEGIN_TEXT \{ image( insertGraph($gr1), tex_size=>250 ) \} $BR \{ image( insertGraph($gr2), tex_size=>250, width=>150, height=>150, extra_html_tags=>'alt="graph of a green ' . 'line through the origin into the first and ' . 'third quadrants and a red line through the ' . 'origin extending into the second and fourth ' . 'quadrants."' ) \} END_TEXT |
Then, in the text section of the file, we have made a couple of additional changes. The first is the inclusion of the
When inserting graph object
Finally, for the It's worth making one more note about this option, which has been broken over a couple of lines to avoid having one very long line on this help page. The short version of the option would be: extra_html_tags=>'alt="alternate text"'
To break the text over multiple lines in this example, we have used the Perl concatenation operator extra_html_tags=>'alt="graph of sin(' . $a . 'x)"'
It is possible to prohibit the use of cached images by setting
|
References
- POD documentation: PGgraphmacros.pl
- PG macro: [1]