When trying to make a bar graph with m-graph.mkiv and sarith, the command Ssub (string subtract) seems to Sadd instead. An mwe of a bar graph: (data1 is a separate file containing 01 02 02 03) \usemodule[m-graph] \startMPpage[instance=graph] input sarith; draw begingraph(5cm,5cm); gdata("data1", v, path p; augment.p(v1,0); augment.p(v1,v2) augment.p(v1 Sadd "0.4",v2); augment.p(v1 Sadd "0.4",0); gfill p--cycle withcolor .8white; gdraw p--cycle; ); endgraph; \stopMPpage ...which gives bars of width 0.4 starting at abscissa 1 and 2 as expected. To increase the width of the bars to 0.8 and have them centered over 1 and 2, I expect to Ssub from the first two augments: \usemodule[m-graph] \startMPpage[instance=graph] input sarith; draw begingraph(5cm,5cm); gdata("data1", v, path p; augment.p(v1 Ssub "0.4",0); augment.p(v1 Ssub "0.4",v2); augment.p(v1 Sadd "0.4",v2); augment.p(v1 Sadd "0.4",0); gfill p--cycle withcolor .8white; gdraw p--cycle; ); endgraph; \stopMPpage However, the Ssub adds instead and gives a line at 1.4 and 2.4. Compiling the above with mpost or mptopdf gives the desired result(s), but I am curious if this can be resolved so such bar graphs could be made within ConTeXT/METAFUN. Thanks! John
Metapost now has double precision arithmetic, so one no longer needs to
use the string arithmetic macros. However, it may be necessary to use
scantokens as in
clearxy;
z = (scantokens v1, scantokens v2);
augment.p(x,0);
augment.p(x,y);
x := x + 0.4 ;
augment.p(x,y);
augment.p(x,0);
Alan
On Sat, 6 Jul 2013 22:01:06 -0400
John Kitzmiller
When trying to make a bar graph with m-graph.mkiv and sarith, the command Ssub (string subtract) seems to augment.p(v1 Sadd "0.4",v2);Sadd instead. An mwe of a bar graph:
(data1 is a separate file containing 01 02 02 03)
\usemodule[m-graph] \startMPpage[instance=graph] input sarith; draw begingraph(5cm,5cm); gdata("data1", v, path p; augment.p(v1,0); augment.p(v1,v2) augment.p(v1 Sadd "0.4",v2); augment.p(v1 Sadd "0.4",0); gfill p--cycle withcolor .8white; gdraw p--cycle; ); endgraph; \stopMPpage
...which gives bars of width 0.4 starting at abscissa 1 and 2 as expected. To increase the width of the bars to 0.8 and have them centered over 1 and 2, I expect to Ssub from the first two augments:
\usemodule[m-graph] \startMPpage[instance=graph] input sarith; draw begingraph(5cm,5cm); gdata("data1", v, path p; augment.p(v1 Ssub "0.4",0); augment.p(v1 Ssub "0.4",v2); augment.p(v1 Sadd "0.4",v2); augment.p(v1 Sadd "0.4",0); gfill p--cycle withcolor .8white; gdraw p--cycle; ); endgraph; \stopMPpage
However, the Ssub adds instead and gives a line at 1.4 and 2.4.
Compiling the above with mpost or mptopdf gives the desired result(s), but I am curious if this can be resolved so such bar graphs could be made within ConTeXT/METAFUN.
Thanks! John
Thank you Alan. That was exactly the redirection needed. John On Jul 7, 2013, at 9:24 AM, Alan BRASLAU wrote:
Metapost now has double precision arithmetic, so one no longer needs to use the string arithmetic macros. However, it may be necessary to use scantokens as in
clearxy; z = (scantokens v1, scantokens v2); augment.p(x,0); augment.p(x,y); x := x + 0.4 ; augment.p(x,y); augment.p(x,0);
Alan
On Sat, 6 Jul 2013 22:01:06 -0400 John Kitzmiller
wrote: When trying to make a bar graph with m-graph.mkiv and sarith, the command Ssub (string subtract) seems to augment.p(v1 Sadd "0.4",v2);Sadd instead. An mwe of a bar graph:
(data1 is a separate file containing 01 02 02 03)
\usemodule[m-graph] \startMPpage[instance=graph] input sarith; draw begingraph(5cm,5cm); gdata("data1", v, path p; augment.p(v1,0); augment.p(v1,v2) augment.p(v1 Sadd "0.4",v2); augment.p(v1 Sadd "0.4",0); gfill p--cycle withcolor .8white; gdraw p--cycle; ); endgraph; \stopMPpage
...which gives bars of width 0.4 starting at abscissa 1 and 2 as expected. To increase the width of the bars to 0.8 and have them centered over 1 and 2, I expect to Ssub from the first two augments:
\usemodule[m-graph] \startMPpage[instance=graph] input sarith; draw begingraph(5cm,5cm); gdata("data1", v, path p; augment.p(v1 Ssub "0.4",0); augment.p(v1 Ssub "0.4",v2); augment.p(v1 Sadd "0.4",v2); augment.p(v1 Sadd "0.4",0); gfill p--cycle withcolor .8white; gdraw p--cycle; ); endgraph; \stopMPpage
However, the Ssub adds instead and gives a line at 1.4 and 2.4.
Compiling the above with mpost or mptopdf gives the desired result(s), but I am curious if this can be resolved so such bar graphs could be made within ConTeXT/METAFUN.
Thanks! John
participants (2)
-
Alan BRASLAU
-
John Kitzmiller