
Ich habe ein Streudiagramm mit Code von erstelltdiese zuvor gestellte Frage.
\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}
Das Streudiagramm sieht am Ende großartig aus, aber ich möchte eine Trendlinie hinzufügen können. Alle Trendlinienbeispiele, die ich gesehen habe, wurden mit Daten berechnet, die direkt in die TeX-Datei eingegeben wurden und nicht aus einer CSV-Datei.
Ist es möglich, dies zu tun?
Mein anderer Gedanke war, in Excel weiterzumachen, die Trendlinie zu berechnen und die Linie dann auf das Diagramm zu legen. Ich würde es allerdings lieber direkter machen, da mein Dokument viele Diagramme enthält.
bearbeiten:Jake hat mir sehr gut erklärt, wie ich das mit direkt in die TeX-Datei eingegebenen Daten machen kann, aber ich habe Probleme mit der direkten Analyse aus der CSV-Datei. Ich habe meinen Code ergänzt und die Fehlermeldung gepostet, die ich in der Konsole erhalte.
Mit dem hinzugefügten Code erhalte ich die Fehlermeldung.
./linearreg.tex:30: Package PGF Math Error: Could not parse input '' as a float
ing point number, sorry. The unreadable part was near ''..
Zeile 30 in meinem Dokument ist die hinzugefügte Zeile mit der linearen Regressionsgleichung.
letzte Bearbeitung:Ich habe es herausgefunden. Dieser Fehler wurde dadurch verursacht, dass meine Datei Spalten mit leeren Daten enthielt. Ich musste diese leeren Daten löschen, um die lineare Regressionslinie zu berechnen.
Hier ist das endgültige MWE meines Codes:
\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}
Antwort1
Um eine lineare Regressionsgerade für Daten aus einer Datendatei zu erhalten, verwenden Sie
\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}