半学グラフ上で最良の線を描き、その方程式を表示する

半学グラフ上で最良の線を描き、その方程式を表示する

関係によって関連付けられているデータがあり、y = B*exp(Cx) そのデータをプロットして関係から値を決定できるようにしたいと考えています。 ln(y) = ln(B) + Cx

xとの生データ値がありますy。それらをプロットしてグラフに最もよく合う線を描き、また最もよく合う線の方程式を表示して、y切片を決定しln(B)、その結果を決定したいと思います。B

今のところ私はこれを持っています

\begin{document}
\begin{tikzpicture}
    \begin{semilogyaxis}
        \addplot table[x={x}, y={y}] {
        x      y
        0.284  0.01
        0.433  0.59
        0.485  2.97
        0.500  3.96
        0.531  9.48
        0.558  18.00
        0.597  45.00
        0.621  94.00
        0.696  1136.00
        };
    \end{semilogyaxis}
\end{tikzpicture}
\end{document}

これはデータをプロットしますが、私が望むような自然対数ではなく、log 10 グラフになります。

私が試してみました

\addplot table[x={x}, y={create col/linear regression={y=y}}] {data.dat};

しかし、無駄でした。

私は最新バージョンの pgf プロットを使用していますが、片対数軸上でなくても回帰線は機能します。

答え1

問題は、プリアンブルにロードしていないパッケージだけにあると思います。あなたの例を(基本的にそのまま)取り入れて、適切なパッケージを追加するとうまくいきます。

方程式に関しては、\pgfplotstableregressionaとを通じてアクセスでき、数値を解析するだけでを に\pgfplotstableregressionb変換できます。は常に に書き込まれるため、計算が完了したらすぐに に書き込むことに注意してください。代わりに次の式を使用した場合:a x + bA e^{B x}\pgfmathresult\fitb

\pgfmathparse{exp(\pgfplotstableregressionb)}
\addlegendentry{Fit: \(\pgfmathresult e^{\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x}\)}

指数計算の結果がまだ含まれているかどうかは保証されません\pgfmathresult(実際、含まれていないことがわかります)。

完全な例は次のとおりです。

\documentclass[tikz]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.13}

\begin{filecontents*}{data.dat}
  x      y
  0.284  0.01
  0.433  0.59
  0.485  2.97
  0.500  3.96
  0.531  9.48
  0.558  18.00
  0.597  45.00
  0.621  94.00
  0.696  1136.00
\end{filecontents*}

\begin{document}
\begin{tikzpicture}
  \begin{semilogyaxis}[
        legend pos=outer north east,
      ]
    \addplot table[x={x}, y={y}] {data.dat};
    \addlegendentry{Data}
    \addplot table[x={x}, y={create col/linear regression={y=y}}] {data.dat};
    \pgfset{/pgf/fpu=true}
    \pgfmathparse{exp(\pgfplotstableregressionb)}
    \pgfmathprintnumberto{\pgfmathresult}{\fitb}
    \addlegendentry{Fit: \(\fitb e^{\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x}\)}
    \pgfset{/pgf/fpu=false}
  \end{semilogyaxis}
\end{tikzpicture}
\end{document}

出力:

出力

関連情報