extra information seems to cause many students to avoid trying problems. I am
afraid that I may have copped out in trying to keep the graph clean by just blaming
the system.
What should I have done to avoid showing the many numbers in black that seem to insert
information provided in the initgraph instruction.
Ken Appel
DOCUMENT();
loadMacros(
"PGstandard.pl",
"PGchoicemacros.pl",
"PGgraphmacros.pl",
# "MathObjects.pl",
# "compoundProblem.pl",
"contextCurrency.pl",
#"unionLists.pl",
#"unionMacros.pl",
"contextLeadingZero.pl",
);
Context()->texStrings;
TEXT(beginproblem());
$showPartialCorrectAnswers = 1;
$graph = init_graph(-.3,-.3,6.7,6.7,pixels=>[700,700],axes=>[.279,.279],grid=>[12,12]);
# the size is 700 by 700 pixels (200 by 200 is default)
# .72 is one unit on the graph
my $im = $graph->im;
$im->setPixel(0,7,0);
# $graph->moveTo(0,0);
# $graph->lineTo(2,0,'black');
$new_label1= new Label (3.14,.162,'5','red',('bottom','left'));
$graph -> lb($new_label1);
$label2= new Label (6,.162,'10','red',('bottom','left'));
$graph -> lb($label2);
$label3= new Label (.19,3.14,'5','red',('bottom','left'));
$graph -> lb($label3);
$label4= new Label (.15,6.07,'10','red',('bottom','left'));
$graph -> lb($label4);
$label5= new Label (.19,.166,'0','red',('bottom','left'));
$graph -> lb($label5);
$label6= new Label (1.45,1.97,'B','blue',('bottom','left'));
$graph -> lb($label6);
$label7= new Label (2.03,.2,'A','blue',('bottom','left'));
$graph -> lb($label7);
$label8= new Label (4.33,4.9,'C','blue',('bottom','left'));
$graph -> lb($label8);
TEXT(image(insertGraph($graph),width=>700,height=>700));
$ansa1=3;
$ansa2=0;
$ansb1=2;
$ansb2=3;
$ansc1=7;
$ansc2=8;
BEGIN_TEXT
$PAR
A flaw in the graphing software puts some small black numbers to the below
and to the left of the axes. For this reason, all numbers on the graph
related to problems will be in colors other than black and the black numbers
should be ignored.
$PAR
The coordinates of the point labelled A are (\{ans_rule(1)\},\{ans_rule(1)\}).
$PAR
The coordinates of the point labelled B are (\{ans_rule(1)\},\{ans_rule(1)\}).
$PAR
The coordinates of the point labelled C are (\{ans_rule(1)\},\{ans_rule(1)\}).
END_TEXT
Context("LeadingZero");
ANS(Real($ansa1)->cmp);
ANS(Real($ansa2)->cmp);
ANS(Real($ansb1)->cmp);
ANS(Real($ansb2)->cmp);
ANS(Real($ansc1)->cmp);
ANS(Real($ansc2)->cmp);
ENDDOCUMENT()
You could leave off the grid, but that would make it hard to tell what the coordinates are. But you could generate your own grid, which is just as good. I do that in the example below.
I'm not sure why you are using a different coordinate system for your graph than for your answers. It seems to me that your graph dimensions should be -1 to 11 and then you can enter your points and labels in that coordinate system rather than scaling by hand. I've done that below. It also makes creating the grid trivial, since the lines are at integer values.
Note also that you can combine your labels into a single call to $graph->lb(), and don't need to make variables to hold the label objects; just pass them to $graph->lb() directly. I do this in the example below.
Finally, I have made the points include an actual marker using circle stamps. These are closed circles, but closed_circle() was too big, so I used the underlying Circle object.
Here's my example:
$graph = init_graph_no_labels(-1,-1,11,11, pixels=>[500,500], axes=>[0,0]); $graph->v_grid('gray',0..10); $graph->h_grid('gray',0..10); $dx = .075; $graph->lb( new Label (5+$dx,0,'5','black',('bottom','left')), new Label (10+$dx,0,'10','black',('bottom','left')), new Label ($dx,5,'5','black',('bottom','left')), new Label ($dx,10,'10','black',('bottom','left')), new Label ($dx,0,'0','black',('bottom','left')), ); $dx = .11; $dy = .03; $graph->lb( new Label(3+$dx,$dy,'A','blue',('bottom','left')), new Label(2+$dx,3+$dy,'B','blue',('bottom','left')), new Label(7+$dx,8+$dy,'C','blue',('bottom','left')), ); $graph->stamps( new Circle(3,0,2.5,'blue','blue'), new Circle(2,3,2.5,'blue','blue'), new Circle(7,8,2.5,'blue','blue'), ); TEXT(image(insertGraph($graph),width=>500,height=>500));
it would be possible to use Point objects to do both the point labels and the answer checking (even with the LeadingZero context, I think), rather than checking the individual coordinates by hand, but you may be wanting to do it that way so the students don't have to type parentheses and commas themselves. It depends on what you are testing, I guess.
Davide