Pgfplots 同一文档中的两个数据表

Pgfplots 同一文档中的两个数据表
    \documentclass[a4paper,12pt]{article}
    \usepackage{pgfplots,pgfplotstable}        % Grafici
    \pgfplotsset{/pgf/number format/use comma,compat=newest}



    %*********************************************************************************
    % Impostazioni Pgfplots
    %*********************************************************************************

    \pgfplotstableread{
    X Y
    0.05 0.17
    0.05 0.041
    0.05 0.023
    0.1 0.332
    0.1 0.089
    0.1 0.041
    0.15 0.5
    0.15 0.132
    0.15 0.06
    }\datatable

    \pgfplotstablecreatecol[linear regression]
    {regression}
    {\datatable}

    \xdef\slope{\pgfplotstableregressiona} %<-- might be handy occasionally
    \xdef\intercept{\pgfplotstableregressionb}



    \begin{document}
    \begin{figure}
    \centering
    \pgfplotsset{width=10cm}
    \begin{tikzpicture}
    \makeatletter \newcommand{\pgfplotsdrawaxis}{\pgfplots@draw@axis} \makeatother
    \pgfplotsset{axis line on top/.style={
     axis on top=false,
     after end axis/.append code={
        \pgfplotsset{axis line style=opaque,
          ticklabel style=opaque,
          tick style=opaque,
          grid=none}
        \pgfplotsdrawaxis}
      }
    }
    \begin{axis}[/pgf/number format/fixed,
    legend pos=outer north east,
    grid=major,
    xmin=0, xmax=0.2,
    ymin=0, ymax=0.6,
    point meta min={0},
    point meta max={0.2},
    yticklabel shift=2pt,
    xticklabel shift=2pt,
    legend pos=north west,
    minor tick num=4,
    axis line on top,
    xticklabel style={text height=1.5ex},
    xtick={0,0.05,...,0.3},
    minor xtick={0,0.01,...,0.2},
    extra x ticks={0,0.05,...,0.3},
    extra x tick style={
        xticklabel pos=right,
        xticklabel style={text depth=0pt}
    },
    extra y ticks={0,0.1,...,0.7},
    extra y tick style={
        yticklabel pos=right
    },
    tick style={thin,black},
    xlabel=\large $m$,
    ylabel=\large $\Delta l$,
    colorbar horizontal,
    colorbar style={
        /pgf/number format/fixed,
        xticklabel shift=2pt,
        xtick={0,0.05,...,0.3},
        xticklabel style={text height=1.5ex}
    },
    colormap={new}{color(0cm)=(violet);color(1cm)=(blue);color(2cm)=(cyan);color(3cm)=(green);color(4cm)=(yellow);color(5cm)=(orange);color(6cm)=(red)},
    after end axis/.append code={
        \draw ({rel axis cs:0,0}-|{axis cs:0,0}) -- ({rel axis cs:0,1}-|{axis cs:0,0});
    },
    legend cell align=left]
    \addplot [point meta=explicit,
        scatter,
        mark=*,
        draw=none]
        table[meta=X] {\datatable};

    \addplot [mesh,point meta=x,domain=0.025:0.175,very thick,samples=1000] {\slope*x+\intercept};
    \addlegendentry{%
    $\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
    \pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}
    \end{axis}
    \end{tikzpicture}
    \end{figure}
    \end{document}

你好,我想在同一个文档中使用两个不同的数据表来制作两个这样的图,我该怎么做?

谢谢

答案1

\documentclass[a4paper,12pt]{article}
\usepackage{pgfplots,pgfplotstable}        % Grafici
\pgfplotsset{/pgf/number format/use comma,compat=newest}


%*********************************************************************************
% Impostazioni Pgfplots
%*********************************************************************************

\pgfplotstableread{
X Y
0.05 0.17
0.05 0.041
0.05 0.023
0.1 0.332
0.1 0.089
0.1 0.041
0.15 0.5
0.15 0.132
0.15 0.06
}\tableA

\pgfplotstablecreatecol[linear regression]
{regression}
{\tableA}

\xdef\slope{\pgfplotstableregressiona} %<-- might be handy occasionally
\xdef\intercept{\pgfplotstableregressionb}


%*********************************************************************************
% Impostazioni Pgfplots
%*********************************************************************************

\pgfplotstableread{
X Y
0.05 0.17
0.05 0.041
0.05 0.023
0.1 0.332
0.1 0.089
0.1 0.041
0.15 0.5
0.15 0.132
0.15 0.06
}\tableB

\pgfplotstablecreatecol[linear regression]
{regression}
{\tableB}

\xdef\slope{\pgfplotstableregressiona} %<-- might be handy occasionally
\xdef\intercept{\pgfplotstableregressionb}

\begin{document}
\begin{figure}
\centering
\pgfplotsset{width=10cm}
\begin{tikzpicture}
\makeatletter \newcommand{\pgfplotsdrawaxis}{\pgfplots@draw@axis} \makeatother
\pgfplotsset{axis line on top/.style={
 axis on top=false,
 after end axis/.append code={
    \pgfplotsset{axis line style=opaque,
      ticklabel style=opaque,
      tick style=opaque,
      grid=none}
    \pgfplotsdrawaxis}
  }
}
\begin{axis}[/pgf/number format/fixed,
legend pos=outer north east,
grid=major,
xmin=0, xmax=0.2,
ymin=0, ymax=0.6,
point meta min={0},
point meta max={0.2},
yticklabel shift=2pt,
xticklabel shift=2pt,
legend pos=north west,
minor tick num=4,
axis line on top,
xticklabel style={text height=1.5ex},
xtick={0,0.05,...,0.3},
minor xtick={0,0.01,...,0.2},
extra x ticks={0,0.05,...,0.3},
extra x tick style={
    xticklabel pos=right,
    xticklabel style={text depth=0pt}
},
extra y ticks={0,0.1,...,0.7},
extra y tick style={
    yticklabel pos=right
},
tick style={thin,black},
xlabel=\large $m$,
ylabel=\large $\Delta l$,
colorbar horizontal,
colorbar style={
    /pgf/number format/fixed,
    xticklabel shift=2pt,
    xtick={0,0.05,...,0.3},
    xticklabel style={text height=1.5ex}
},
colormap={new}{color(0cm)=(violet);color(1cm)=(blue);color(2cm)=(cyan);color(3cm)=(green);color(4cm)=(yellow);color(5cm)=(orange);color(6cm)=(red)},
after end axis/.append code={
    \draw ({rel axis cs:0,0}-|{axis cs:0,0}) -- ({rel axis cs:0,1}-|{axis cs:0,0});
},
legend cell align=left]
\addplot [point meta=explicit,
    scatter,
    mark=*,
    draw=none]
    table[meta=X] {\tableA};

\addplot [mesh,point meta=x,domain=0.025:0.175,very thick,samples=10] {\slope*x+\intercept};
\addlegendentry{%
$\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
\pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}
\end{axis}
\end{tikzpicture}
\end{figure}



\begin{figure}
\centering
\pgfplotsset{width=10cm}
\begin{tikzpicture}
\makeatletter \newcommand{\pgfplotsdrawaxis}{\pgfplots@draw@axis} \makeatother
\pgfplotsset{axis line on top/.style={
 axis on top=false,
 after end axis/.append code={
    \pgfplotsset{axis line style=opaque,
      ticklabel style=opaque,
      tick style=opaque,
      grid=none}
    \pgfplotsdrawaxis}
  }
}
\begin{axis}[/pgf/number format/fixed,
legend pos=outer north east,
grid=major,
xmin=0, xmax=0.2,
ymin=0, ymax=0.6,
point meta min={0},
point meta max={0.2},
yticklabel shift=2pt,
xticklabel shift=2pt,
legend pos=north west,
minor tick num=4,
axis line on top,
xticklabel style={text height=1.5ex},
xtick={0,0.05,...,0.3},
minor xtick={0,0.01,...,0.2},
extra x ticks={0,0.05,...,0.3},
extra x tick style={
    xticklabel pos=right,
    xticklabel style={text depth=0pt}
},
extra y ticks={0,0.1,...,0.7},
extra y tick style={
    yticklabel pos=right
},
tick style={thin,black},
xlabel=\large $m$,
ylabel=\large $\Delta l$,
colorbar horizontal,
colorbar style={
    /pgf/number format/fixed,
    xticklabel shift=2pt,
    xtick={0,0.05,...,0.3},
    xticklabel style={text height=1.5ex}
},
colormap={new}{color(0cm)=(violet);color(1cm)=(blue);color(2cm)=(cyan);color(3cm)=(green);color(4cm)=(yellow);color(5cm)=(orange);color(6cm)=(red)},
after end axis/.append code={
    \draw ({rel axis cs:0,0}-|{axis cs:0,0}) -- ({rel axis cs:0,1}-|{axis cs:0,0});
},
legend cell align=left]
\addplot [point meta=explicit,
    scatter,
    mark=*,
    draw=none]
    table[meta=X] {\tableB};

\addplot [mesh,point meta=x,domain=0.025:0.175,very thick,samples=10] {\slope*x+\intercept};
\addlegendentry{%
$\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x
\pgfmathprintnumber[print sign]{\pgfplotstableregressionb}$}
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}

相关内容