Erros Mpgraph no ConTeXt

Erros Mpgraph no ConTeXt

Preciso colocar alguns gráficos de barras em um documento ConTeXt. Estou usando o mkiv do TeX Live 2011, no Gentoo GNU/Linux. Tentei usar o Gnuplot, mas achei mpgraphque atende melhor às minhas necessidades.

Estou usando este arquivo TeX

\usemodule[graph]
\usemodule[sarith]

\enableregime[utf-8]
\starttext

\startMPcode
beginfig(1)
  draw begingraph(12cm,6cm);
    glabel.lft(btex Eje Y etex, OUT);
    glabel.bot(btex Eje X etex, OUT);
    gdata("data.d",
        $,
        path p;
        augment.p (0,$1);
        augment.p ($2,$1);
        augment p ($2,$1 Sadd "1");
        augment p (0,$1 Sadd "1");
        gdraw p withpen pencircle scaled 2bp withcolor red;
    );
  autogrid(grid.bot,grid.lft) withcolor .85white;
  endgraph;
endfig;
\stopMPcode
\stoptext

e este arquivo de dados

1 4
2 2
3 1
4 2
5 4

como um exemplo mínimo 'funcional'.

Porém, algo estranho está acontecendo: não consigo usar nenhum operador do sarithmódulo (usado no mpgraphmódulo para desenhar caixas). Eu obtiveesta saídacom ConTeXt. Tentei compilar com Metapost, embora não tenha recebido erros ou avisos de que a saída .dvi está corrompida.

Tentei também com o TeX Live 2012 no Windows 7. Não consigo compilar lá por causa disso sarith, mas quando comento essas linhas funciona. Mas fazer a mesma coisa na minha caixa do Gentoo funciona, exceto que o texto para rótulos ou eixos não aparece, apenas um pequeno quadrado. Não entendo o que está acontecendo, mesmo o exemplo do wiki ConTeXt não funciona. Pistas? Qualquer ajuda é muito apreciada!

Responder1

Você precisa substituir \usepackage[sarith]por

\startMPinitializations
input sarith;
\stopMPinitializations

sarithnão é um módulo ConTeXt, mas sim um pacote metapost, portanto precisa ser incluído no final do metapost.

Além disso, como apontou morbusg, não há necessidade de adicionar beginfig(1)...endfigum MPcodeambiente. Com essas duas alterações, funciona o seguinte:

\usemodule[graph]
\startMPinitializations
input sarith;
\stopMPinitializations

\starttext

\startMPcode
  draw begingraph(12cm,6cm);
    glabel.lft(btex Eje Y etex, OUT);
    glabel.bot(btex Eje X etex, OUT);
    gdata("data.d",
        $,
        path p;
        augment.p (0,$1);
        augment.p ($2,$1);
        augment p ($2,$1 Sadd "1");
        augment p (0,$1 Sadd "1");
        gdraw p withpen pencircle scaled 2bp withcolor red;
    );
  autogrid(grid.bot,grid.lft) withcolor .85white;
  endgraph;
\stopMPcode
\stoptext

Responder2

Para alterar a fonte dos números nas grades descobri que se eu definir manualmente os valores da grade, em vez de usar a configuração automática, a fonte é convertida para o formato do documento. Aqui está um exemplo da documentação MPGraph de John Handy com minha revisão:

Original

draw begingraph(6.5cm,4.5cm);
    setrange(80,0, 90,whatever);
        glabel.bot(btex Year etex, OUT);
        glabel.lft(btex \vbox{\hbox{Emissions in} \hbox{thousands of}
            \hbox{metric tons} \hbox{(heavy line)}}etex, OUT);
        gdraw "lead.d" withpen pencircle scaled 1.5pt;
        autogrid(,otick.lft);
        setcoords(linear,linear);
    setrange(80,0, 90,whatever);
        glabel.rt(btex \vbox{\hbox{Micrograms} \hbox{per cubic}
            \hbox{meter of air} \hbox{(thin line)}}etex, OUT);
    gdraw "lead.d";
        autogrid(otick.bot,otick.rt);
endgraph;

com

draw begingraph(6.5cm,4.5cm);
    setrange(79.5,0, 90.5,80) ;
    glabel.bot(btex Year etex, OUT) shifted(-8pt,-2pt);
    glabel.lft(btex \vbox{% -- \hss fills space horizontally; \strut fixes line space
        \hbox to 5cm {\hss \strut Emissions in thousands of \hss}
        \hbox to 5cm {\hss \strut metric tons (solid line) \hss}
    }
    etex, OUT) shifted(83pt,17pt) rotated 90;
    gdraw "lead.d" withpen pencircle scaled 1pt;
    itick.lft(format("\%2",0),0) withcolor white;
    itick.lft(format("\%2",20),20) withcolor white;
    itick.lft(format("\%2",40),40) withcolor white;
    itick.lft(format("\%2",60),60) withcolor white;
    itick.lft(format("\%2",80),80) withcolor white;
    frame.lft withcolor white ;

    otick.bot(format("\%2",80),80) withcolor white;
    otick.bot(format("\%2",82),82) withcolor white;
    otick.bot(format("\%2",84),84) withcolor white;
    otick.bot(format("\%2",86),86) withcolor white;
    otick.bot(format("\%2",88),88) withcolor white;
    otick.bot(format("\%2",90),90) withcolor white;
endgraph;

Experimente isso.

informação relacionada