Ich habe einige Daten, die durch die folgende Beziehung verknüpft sind. y = B*exp(Cx)
Ich möchte in der Lage sein, die Daten grafisch darzustellen und den Wert aus der Beziehung zu bestimmen:
ln(y) = ln(B) + Cx
Ich habe Rohdatenwerte von x
und y
. Ich möchte sie darstellen und eine Linie der besten Anpassung in das Diagramm zeichnen und auch die Gleichung der Linie der besten Anpassung anzeigen, um den y-Achsenabschnitt zu bestimmen, der gleich ist, ln(B)
und infolgedessen zu bestimmenB
Bisher habe ich das
\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}
Dadurch werden die Daten dargestellt, allerdings in einem Log-10-Diagramm und nicht in einem natürlichen Logarithmus, wie ich es gerne hätte.
Ich habe versucht
\addplot table[x={x}, y={create col/linear regression={y=y}}] {data.dat};
aber ohne Erfolg.
Ich verwende eine aktuelle Version von PGF-Diagrammen und die Regressionslinie funktioniert, wenn sie nicht auf der halblogarithmischen Achse liegt.
Antwort1
Ich denke, das Problem liegt nur in dem Paket, das Sie in Ihrer Präambel nicht laden. Ihr Beispiel (im Wesentlichen wörtlich) zu nehmen und das entsprechende Paket hinzuzufügen, funktioniert für mich.
Was die Gleichung betrifft, sind sie über \pgfplotstableregressiona
und zugänglich \pgfplotstableregressionb
, und wir können von a x + b
in umwandeln A e^{B x}
, indem wir einfach die Zahlen analysieren. Beachten Sie, dass \pgfmathresult
es die ganze Zeit in geschrieben wird, weshalb ich es in schreibe, \fitb
sobald ich die Berechnung abgeschlossen habe. Wenn Sie stattdessen hätten:
\pgfmathparse{exp(\pgfplotstableregressionb)}
\addlegendentry{Fit: \(\pgfmathresult e^{\pgfmathprintnumber{\pgfplotstableregressiona} \cdot x}\)}
dann haben Sie keine Garantie, dass \pgfmathresult
immer noch die Ergebnisse der Potenzierung enthalten sind (und Sie werden tatsächlich feststellen, dass dies nicht der Fall ist).
Hier ist das vollständige Beispiel:
\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}
Ausgabe: