Diagrama de dispersión con datos del archivo CSV y línea de tendencia

Diagrama de dispersión con datos del archivo CSV y línea de tendencia

He creado un diagrama de dispersión con código deesta pregunta anterior.

\documentclass[varwidth=true, border=2pt]{standalone}
\usepackage[utf8]{inputenc} % this is needed for umlauts
\usepackage[ngerman]{babel} % this is needed for umlauts
\usepackage[T1]{fontenc}    % this is needed for correct output of umlauts in pdf
\usepackage[margin=2.5cm]{geometry} %layout  
\usepackage{pgfplots}


\begin{filecontents}{table3.csv}
column 1    column 2
1966    37.51817228
1960    40.56693583
1961    40.71972964
1962    40.97560208
1964    41.11687187
1963    41.25082828
1965    46.02625404
1960    46.22815872
1967    46.67800113
1961    48.39523271
\end{filecontents}


\begin{document}

\begin{tikzpicture}
    \begin{axis}[
            axis x line=middle,
            axis y line=middle,
            enlarge y limits=true,
            %xmin=0, xmax=2150,
            %ymin=0, ymax=600,
            width=15cm, height=8cm,     % size of the image
            grid = major,
            grid style={dashed, gray!30},
            ylabel=steps,
            xlabel=$n$,
            legend style={at={(0.1,-0.1)}, anchor=north}
         ]        
          \addplot[scatter,only marks] table [x=column 1, y=column 2, col sep=comma] {table3.csv};

          %the code below is added via @Peter's comment.
          \addplot[only marks] table [col sep = comma,y={create col/linear regression={y=column 2}}]{table3.csv};


    \end{axis}
\end{tikzpicture}

\end{document}

El diagrama de dispersión queda genial, pero quiero poder agregar una línea de tendencia. Todos los ejemplos de líneas de tendencia que he visto se calcularon con datos ingresados ​​directamente en el archivo .TeX y no desde un archivo .csv.

¿Es posible hacer esto?

Mi otro pensamiento fue continuar con Excel, calcular la línea de tendencia y luego superponer la línea en el gráfico. Realmente preferiría poder hacerlo de una manera más directa, ya que mi documento tiene muchos gráficos.

editar:Jake me dio una gran orientación sobre cómo hacer esto con datos ingresados ​​directamente en el archivo TeX, pero tengo problemas para analizar directamente desde el archivo .csv. Agregué a mi código y publiqué el mensaje de error que recibo en la consola.

Con el código agregado aparece el mensaje de error.

./linearreg.tex:30: Package PGF Math Error: Could not parse input '' as a float
ing point number, sorry. The unreadable part was near ''..

La línea 30 de mi documento es la línea agregada con la ecuación de regresión lineal.

edición final:Me lo imaginé. Este error se produjo porque mi archivo tenía columnas con datos en blanco. Tuve que eliminar estos datos en blanco para calcular la línea de regresión lineal.

Aquí está el mwe final de mi código:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}

\begin{document}
\pgfplotstableread[col sep = comma]{table4.csv}\loadedtable

\begin{tikzpicture}
    \begin{axis}[
        xlabel=Weight (kg), % label x axis
        ylabel=Height (cm), % label y axis
        axis lines=left, %set the position of the axes
        clip=false
    ]

            \addplot[scatter, only marks] table [x=column 1, y=column 2, col sep=comma] {\loadedtable};
            \addplot[very thick, red] table [col sep = comma,y={create col/linear regression={y=column 2}}]{\loadedtable};

    \end{axis}

\end{tikzpicture}
\end{document}

Respuesta1

Para obtener una línea de regresión lineal para datos de un archivo de datos, use

\addplot [no markers] table [y={create col/linear regression={y=<column name>}}] {<file name>};

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots, pgfplotstable}
\usepackage{filecontents}

\begin{filecontents}{table.dat}
x y
0 1
100 3
150 2
200 5
300 6
\end{filecontents}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
            axis x line=middle,
            axis y line=middle,
            enlarge y limits=true,
            width=15cm, height=8cm,     % size of the image
            grid = major,
            grid style={dashed, gray!30},
            ylabel=steps,
            xlabel=$n$,
            legend style={at={(0.1,-0.1)}, anchor=north}
         ]        
        \addplot[only marks] table  {table.dat};
        \addplot [no markers, thick, red] table [y={create col/linear regression={y=y}}] {table.dat};
    \end{axis}
\end{tikzpicture}

\end{document}

información relacionada