関係によって関連付けられているデータがあり、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 + b
A 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}
出力: