Dibujar la línea de mejor en el gráfico de semilogía y mostrar su ecuación.

Dibujar la línea de mejor en el gráfico de semilogía y mostrar su ecuación.

Tengo algunos datos que están relacionados por la relación. y = B*exp(Cx) Quiero poder trazar los datos y determinar el valor de la relación: ln(y) = ln(B) + Cx

Tengo valores de datos sin procesar de xy y. Deseo trazarlos y dibujar una línea de mejor ajuste en el gráfico y también mostrar la ecuación de la línea de mejor ajuste, para determinar la intersección y que es igual a ln(B)y, como consecuencia, determinarB

Hasta ahora tengo esto

\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}

Que traza los datos, aunque en un gráfico de registro 10 no es un registro natural como me gustaría.

Yo he tratado

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

pero fue en vano.

Estoy usando una versión actualizada de los gráficos pgf y la línea de regresión funciona si no está en el eje semilogarítmico.

Respuesta1

Creo que el problema está simplemente en el paquete que no estás cargando en tu preámbulo. Tomar su ejemplo (básicamente palabra por palabra) y agregar el paquete apropiado me funciona.

Con respecto a la ecuación, se puede acceder a ella a través de \pgfplotstableregressionay \pgfplotstableregressionby podemos convertirla a x + bsimplemente A e^{B x}analizando los números. Tenga en cuenta que \pgfmathresultse escribe todo el tiempo, por eso lo escribo \fitbtan pronto como haya completado el cálculo. Si en cambio tuvieras:

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

entonces no está garantizado que \pgfmathresulttodavía contenga los resultados de la exponenciación (y de hecho, encontrará que no es así).

Aquí está el ejemplo completo:

\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}

Producción:

producción

información relacionada