pgfplots - Zusätzliche Markierung auf der x-Achse definieren

Formelsatz für Mathematik, Naturwissenschaften und Technik


simande
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 19. Aug 2015, 20:42
Wohnort: Germany

pgfplots - Zusätzliche Markierung auf der x-Achse definieren

Beitrag von simande »

Servus zusammen,

ich habe eine lineare Regression erstellt und würde nun gerne die Nullstelle markieren lassen. Ich könnte das Ganze natürlich ausrechnen und dann mit
extra x ticks={x1}
erstellen. Ich würde das aber gerne mit den Befehlen
pgfplotstableregressiona
und
pgfplotstableregressionb
erstellen. Ich muss nämlich ziemlich viele solcher Graphen erstellen und würde gerne einfach nur ein paar .txt Dateien einbinden und den Rest dann Tex erledigen lassen.
Kann mir da von euch vielleicht jemand helfen?

Schon mal vielen Dank,

Simande
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{%
    ,compat=1.12
    ,every axis legend/.append style={%
        ,at={(0.03,0.97)}
        ,anchor=north west}
        }
\usepackage{pgfplotstable}

\begin{document} 
\begin{tikzpicture}
    \begin{axis}[%
        ,width=10cm,height=10cm
        ,x tick label style={/pgf/number format/1000 sep=}
        ,xmin=0,xmax=0.6
        ,ymin=0,ymax=22 
        ,xlabel=Weg/mm, 
        ,ylabel=Kraft/N,
        ]
        \addplot+[%
            ,fill = blue
            ,mark = *
            ,mark options={solid}
            ,only marks
            ] table {%
                x       y
                0.400   18.096
                0.400   18.401
                0.400   17.767
                0.400   16.992
                0.400   16.399
                0.397   15.908
                0.392   15.440
                0.387   14.533
                0.382   13.258
                0.377   11.939      
                };
        \addlegendentry{Kraft-Weg-Kurve}
        \addplot [] table [%
            ,y={create col/linear regression}] {%
                x       y
                0.400   18.096
                0.400   18.401
                0.400   17.767
                0.400   16.992
                0.400   16.399
                0.397   15.908
                0.392   15.440
                0.387   14.533
                0.382   13.258
                0.377   11.939
                };  
        \addplot [draw,domain=0.25:0.5] (x,\pgfplotstableregressiona*x+\pgfplotstableregressionb);
        \addlegendentry{Regression {$\pgfmathprintnumber[precision=4, fixed zerofill]{\pgfplotstableregressiona} \cdot \mathrm{t} \pgfmathprintnumber[precision=4, fixed zerofill]{\pgfplotstableregressionb}$}}  
    \end{axis}
\end{tikzpicture}   
\end{document}
Bild
Dateianhänge
simandeNullstelle.png
simandeNullstelle.png (22.76 KiB) 2639 mal betrachtet

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Clemens
Paketauthor

Gast

Beitrag von Gast »


simande
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 19. Aug 2015, 20:42
Wohnort: Germany

Beitrag von simande »

Hier ist eine gut funktionierende Lösung: http://latex-community.org/forum/viewto ... 610#p91609

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Alternativ kannst Du die Daten auch in eine Datei schreiben und anschließend laden.
\begin{filecontents*}{Daten1.dat}
x       y 
0.400   18.096 
0.400   18.401 
0.400   17.767 
0.400   16.992 
0.400   16.399 
0.397   15.908 
0.392   15.440 
0.387   14.533 
0.382   13.258 
0.377   11.939 
\end{filecontents*}

\documentclass{article} 
\usepackage{pgfplots} 
\pgfplotsset{% 
     ,compat=1.12 
     ,every axis legend/.append style={% 
         ,at={(0.03,0.97)} 
         ,anchor=north west} 
         } 
\usepackage{pgfplotstable} 

\begin{document}
\begin{tikzpicture}
     \begin{axis}[% 
         ,width=10cm,height=10cm 
         ,x tick label style={/pgf/number format/1000 sep=} 
         ,xmin=0,xmax=0.6 
         ,ymin=0,ymax=22 
         ,xlabel=Weg/mm, 
         ,ylabel=Kraft/N,
         ,extra x ticks={\nullstelle}
         ,extra x tick style={ticklabel style={yshift=-1em,red}}
         ]
        \pgfplotstableread{Daten1.dat}\daten 
        \pgfplotstablecreatecol[linear regression]{regression}{\daten} 
        \pgfmathsetmacro\nullstelle{-1 * \pgfplotstableregressionb/\pgfplotstableregressiona}
         \addplot+[% 
             ,only marks 
             ]table {\daten}; 
         \addlegendentry{Kraft-Weg-Kurve} 
         \addplot [draw,domain=0.25:0.5] (x,\pgfplotstableregressiona*x+\pgfplotstableregressionb); 
                 \addlegendentry{Regression %
          {$\pgfmathprintnumber[precision=4, fixed zerofill]{\pgfplotstableregressiona} %
            \cdot \mathrm{t} \pgfmathprintnumber[precision=4, fixed zerofill]{\pgfplotstableregressionb}$}} 
     \end{axis} 
\end{tikzpicture}
\end{document}
Ich habe die Beschriftung des zusätzlichen Ticks noch etwas nach unten verschoben, damit sie nicht die schon vorhandenen überlappt.

Antworten