Zeichnen der Bestenlinie im Semiologiediagramm und Anzeigen der Gleichung

Zeichnen der Bestenlinie im Semiologiediagramm und Anzeigen der Gleichung

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 xund 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 \pgfplotstableregressionaund zugänglich \pgfplotstableregressionb, und wir können von a x + bin umwandeln A e^{B x}, indem wir einfach die Zahlen analysieren. Beachten Sie, dass \pgfmathresultes die ganze Zeit in geschrieben wird, weshalb ich es in schreibe, \fitbsobald 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 \pgfmathresultimmer 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:

Ausgabe

verwandte Informationen