Seite 1 von 2

Messwerte Plotten und gerade durch den Mittelwert

Verfasst: Mo 22. Apr 2013, 11:42
von Patrick1990
Hallo,
ich habe hier 6 Messwerte, diese weichen wie immer von der Theorie ab, ich möchte aber nun durch diese Messwerte eine gerade legen, oder jedenfalls an die Messwerte. Wie kann ich dort vorgeben?

Verfasst: Mo 22. Apr 2013, 11:50
von Johannes_B
Das selbe Problem hattest du doch auch in einem anderen Post, warum kannst du nicht vormals Gelerntes auf neue Situationen übertragen?

Es kann auch sein, dass ich jetzt irgendetwas falsch verstehe, aber ...

Verfasst: Mo 22. Apr 2013, 11:56
von Patrick1990
Ja, du verstehst das nun falsch, vorher war es eine Gerade durch 2 Punkte.

Nun habe ich Messwerte gegeben, die von der Geraden abweichen (d.h. sie liegen darüber oder darunter), ich dachte es gibt eine Möglichkeit, dass eine Solche gerade durch den Mittelwert der Punkte automatisch erzeugt wird, ohne dass ich diese berechnen muss.

Wenn dies nicht geht, auch ok.
Ich dacht nur im Forum kann man seine Fragen stellen ;)

Verfasst: Mo 22. Apr 2013, 17:54
von Patrick1990
Also ich habe hier ein Minimalbeispiel:
 \documentclass[ 
  11pt, 
  border=2pt 
]{standalone} 
\usepackage[T1]{fontenc} 
\usepackage{pgfplots,pgfplotstable} 
\usepackage[locale=DE]{siunitx} 
\usepackage{textcomp} 

\usepackage{filecontents} 
\begin{filecontents*}{Aufgabe_8.2.dat} 
U I 
0 0 
2 20,2
4 41
6 60,4
8 80,8
10 100,4
\end{filecontents*} 

\pgfplotsset{ 
  compat=newest, 
  xlabel near ticks, 
  ylabel near ticks 
} 

\begin{document} 
\begin{tikzpicture}[scale=1.5]
\begin{axis}[ 
axis lines=middle, 
xmin=0, 
xmax=13, 
xlabel={U / \si{\volt}}, 
ylabel={I / \si{\micro\ampere}} 
] 
\addplot[raw gnuplot,smooth] gnuplot { 
        f(x)=a*x+b; 
        fit f(x) 'Aufgabe_8.2.dat' using 1:2 via a,b; 
        plot [x=0:11] f(x); 
      }; 
    \end{axis} 
  \end{tikzpicture} 
\end{document}
Schön wäre es, wenn zusätzlich die Messwerte noch als Punkt im Koordinatensystem erscheinen und die Achsenbeschriftung direkt an den Achsen ist.

Verfasst: Mo 22. Apr 2013, 18:30
von Johannes_B
\documentclass[
  11pt,
  border=2pt
]{standalone}
\usepackage[T1]{fontenc}
\usepackage{pgfplots,pgfplotstable}
\usepackage[locale=DE]{siunitx}
\usepackage{textcomp}

\usepackage{filecontents}
\begin{filecontents*}{Aufgabe_8.2.dat}
#U I
0 0
2 20.2
4 41
6 60.4
8 80.8
10 100.4
\end{filecontents*}

\pgfplotsset{
  compat=newest,
  xlabel near ticks,
  ylabel near ticks
}

\begin{document}
\begin{tikzpicture}[scale=1.5]
\begin{axis}[
%axis lines=middle,
xmin=0,
xmax=13,
xlabel={U / \si{\volt}},
ylabel={I / \si{\micro\ampere}}
]
\addplot[raw gnuplot,smooth] gnuplot {
        f(x)=a*x+b;
        fit f(x) 'Aufgabe_8.2.dat' using 1:2 via a,b;
        plot [x=0:11] f(x);
      };
\addplot table {Aufgabe_8.2.dat};
    \end{axis}
  \end{tikzpicture}
\end{document} 

pgf erwartet Dezimalzahlen mit Dezimalpunkt, dabei solltest du bei der Bereitstellung deiner Daten achten. Weiterhin solltest du die Headerzeile in deinen Messfiles kennzeichnen (das Doppelkreuz # ist Kommentarsequenz von Gnuplot, wird aber auch durch pgf erkannt).

Verfasst: Mo 22. Apr 2013, 18:45
von Patrick1990
Vielen Dank.
Aber die vorherige Version des Koordinatensystems kann man nicht beibehalten?

Bordmittel

Verfasst: Mo 22. Apr 2013, 18:52
von localghost
Lineare Regression kann pgfplots auch von Haus aus.
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{pgfplots,pgfplotstable}
\usepackage[locale=DE]{siunitx}

\usepackage{filecontents}
\begin{filecontents*}{Aufgabe-8.2.dat}
U I
0 0
2 20.2
4 41
6 60.4
8 80.8
10 100.4
\end{filecontents*}

\pgfplotsset{
  compat=newest,
  xlabel near ticks,
  ylabel near ticks
}

\begin{document}
  \begin{tikzpicture}[scale=1.5]
    \begin{axis}[
      axis lines=middle,
      xmin=0,
      xmax=10,
      xlabel={U / \si{\volt}},
      ylabel={I / \si{\micro\ampere}}
    ]
      \addplot+[only marks] table {Aufgabe-8.2.dat};
      \addplot[smooth] table [y={create col/linear regression={y=I}}] {Aufgabe-8.2.dat};
    \end{axis}
  \end{tikzpicture}
\end{document}
Der Fit per Gnuplot ist eigentlich nur nötig, wenn kompliziertere Funktionen gefittet werden sollen oder die gefittete Funktion über die eigentlich Messwerte hinaus geplottet werden soll. Gnuplot als Arbeitspferd zu benutzen schadet aber auch nicht.

Bei diesem Verfahren muss die erste Zeile des Datensatzes die Spaltenbeizeichnungen enthalten und darf nicht auskommentiert werden.


Thorsten

Verfasst: Mo 22. Apr 2013, 19:29
von Patrick1990
DANKE Thorsten, aber wieso ist die Achsenbeschriftung so weit entfernt? Kann man da noch etwas Ändern?

Position der Achsenbeschriftungen

Verfasst: Mo 22. Apr 2013, 20:00
von localghost
Patrick1990 hat geschrieben:[…] aber wieso ist die Achsenbeschriftung so weit entfernt? Kann man da noch etwas Ändern?
Kann ich so nicht nachvollziehen. Aber vielleicht gefällt dir das hier besser.
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{pgfplots,pgfplotstable}
\usepackage[locale=DE]{siunitx}

\usepackage{filecontents}
\begin{filecontents*}{Aufgabe-8.2.dat}
U I
0 0
2 20.2
4 41
6 60.4
8 80.8
10 100.4
\end{filecontents*}

\pgfplotsset{
  compat=newest,
  xlabel near ticks,
  ylabel near ticks
}

\begin{document}
  \begin{tikzpicture}[scale=1.5]
    \begin{axis}[
      axis x line=bottom,
      xmin=0,
      xmax=11,
      xlabel={U / \si{\volt}},
      axis y line=left,
      ymin=0,
      ymax=110,
      ylabel={I / \si{\micro\ampere}}
    ]
      \addplot+[only marks] table {Aufgabe-8.2.dat};
      \addplot[smooth] table [y={create col/linear regression={y=I}}] {Aufgabe-8.2.dat};
    \end{axis}
  \end{tikzpicture}
\end{document}
Zur Not kannst Du die Beschriftungen auch manuell positionieren.

Verfasst: Mo 22. Apr 2013, 20:07
von Patrick1990
Danke, ja so gehts auch.

Gibt es hier noch eine Möglichkeit, den Verlauf der Kurve schöner anzeigen zu lassen?

\documentclass[ 
  11pt, 
  border=2pt 
]{standalone} 
\usepackage[T1]{fontenc} 
\usepackage{pgfplots,pgfplotstable} 
\usepackage[locale=DE]{siunitx} 
\usepackage{textcomp} 

 

\pgfplotsset{ 
  compat=newest, 
  xlabel near ticks, 
  ylabel near ticks 
} 

\begin{document} 
\begin{tikzpicture}[scale=1.5]
\begin{axis}[ 
axis x line=bottom, 
xmin=0, 
xmax=1.2,
axis y line=left,
ymin=0,
ymax=3.5, 
xlabel={$U$ in $\left[\si{\volt}\right]$}, 
ylabel={$I$ in$\left[\si{\milli\ampere}\right]$},
grid=major 
] 
\addplot+[color=red,mark=x,smooth] 
coordinates {
(1.06,	3) 
(0.99,	2.5) 
(0.9,		2) 
(0.805,	1.5) 
(0.71,	1) 
(0.605,	0.5) 
(0.6,		0.4)
(0.56,	0.3)
(0.53,	0.2)
(0.5,		0.1)
(0,		0)
};
\end{axis} 
\end{tikzpicture}
\end{document}