pgfplot lineare Funktion nicht korrekt

Tabellen und Grafiken erstellen und anordnen


wojoeraf
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 24. Dez 2012, 14:07

pgfplot lineare Funktion nicht korrekt

Beitrag von wojoeraf »

Hallo,

habe rausgefunden, wie ich pgfplots in meinem Koordinatensystem verwenden kann. Jedoch klappt das bei einer simplen linearen Funktion grade nicht, wohingegen z.B. die Exponentialfunktion korrekt in mein Koordinatensystem integriert wird. Kann jemand helfen?

Verrückterweise wird die lineare Funktion korrekt dargestellt, wenn man die Exponentialfunktion mit plottet.
\documentclass{report}
\usepackage{pgfplots}
\usepackage{pgf,tikz}
\usetikzlibrary{arrows}

\begin{document}
\begin{tikzpicture}[>=triangle 45,x=1.0cm,y=1.0cm]
\draw [dotted, gray, step=0.5cm] (-6.4,-1.4) grid (7.4,9.4);
\draw [-triangle 45, line width = 1.5pt] (-6,0) -- (7,0);
\draw [-triangle 45, line width = 1.5pt] (0,-1) -- (0,9);
\foreach \x in {-6,-5,...,6}
	\draw [line width = 1.5pt] (\x,4pt) -- ++(0pt,-8pt);
\foreach \y in {-1,0,...,8}
	\draw [line width = 1.5pt] (-4pt,\y) -- ++(8pt,0pt);
\node [rectangle, fill=white, below, inner ysep=0.8em, inner xsep=0.8em, label={center:1}] at (1,-4pt) {};
\node [rectangle, fill=white, left, inner ysep=0.6em, inner xsep=0.8em, label={center:1}] at (-4pt,1) {};
\node [rectangle, fill=white, label={center:$x$}, below=7pt] at (7,0) {};
\node [rectangle, fill=white, label={center:$y$}, left=7pt] at (0,9) {};

\begin{axis}[disabledatascaling,
			axis lines=none,
			no markers,
			domain=-6:2,
			samples=50,
			x=1cm,
			y=1cm,
			anchor=origin,
			] 
\addplot {0.5*x+6};
%\addplot {exp(x)};

\end{axis}
\end{tikzpicture}
\end{document}

Epllus
Forum-Guru
Forum-Guru
Beiträge: 470
Registriert: So 23. Sep 2012, 17:31

Beitrag von Epllus »

Des Rätsels Lösung findest du heraus, wenn du die Grafen mit den Achsen plottest. pgfplots zeigt immer nur die Ausschnitte, die nötig sind, sprich in denen was abgebildet wird. Die lineare Gleichung geht von y=3 zu y=7, also wird nur der Teil abgebildet. y=0-2 wird aber nicht abgebildet, deshalb „rutscht“ die Gleichung nach unten und ist bei der handgenerierten Achse an dem falschen Platz.
Fügst du nun die exponentielle Funktion hinzu, die bei y=0 beginnt, passt das ganze.

Ich hoffe ich habe es geschafft das Problem zu erklären.
Zur Lösung könntest du ein simples \addplot{0}; einfügen (vermutlich gibt es auch eine Option, die mir im Moment aber nicht einfällt):
\documentclass{report} 
\usepackage{pgfplots} 
\usepackage{pgf,tikz} 
\usetikzlibrary{arrows} 

\begin{document} 
\begin{tikzpicture}[>=triangle 45,x=1.0cm,y=1.0cm] 
\draw [dotted, gray, step=0.5cm] (-6.4,-1.4) grid (7.4,9.4); 
\draw [-triangle 45, line width = 1.5pt] (-6,0) -- (7,0); 
\draw [-triangle 45, line width = 1.5pt] (0,-1) -- (0,9); 
\foreach \x in {-6,-5,...,6} 
   \draw [line width = 1.5pt] (\x,4pt) -- ++(0pt,-8pt); 
\foreach \y in {-1,0,...,8} 
   \draw [line width = 1.5pt] (-4pt,\y) -- ++(8pt,0pt); 
\node [rectangle, fill=white, below, inner ysep=0.8em, inner xsep=0.8em, label={center:1}] at (1,-4pt) {}; 
\node [rectangle, fill=white, left, inner ysep=0.6em, inner xsep=0.8em, label={center:1}] at (-4pt,1) {}; 
\node [rectangle, fill=white, label={center:$x$}, below=7pt] at (7,0) {}; 
\node [rectangle, fill=white, label={center:$y$}, left=7pt] at (0,9) {}; 

\begin{axis}[disabledatascaling, 
         axis lines=none, 
         no markers, 
         domain=-6:2, 
         samples=50, 
         x=1cm, 
         y=1cm, 
         anchor=origin, 
         ] 
\addplot {0.5*x+6}; 
\addplot{0};
%\addplot {exp(x)}; 

\end{axis} 
\end{tikzpicture} 
\end{document} 
Hoffe es hilft
Epllus

wojoeraf
Forum-Anfänger
Forum-Anfänger
Beiträge: 21
Registriert: Mo 24. Dez 2012, 14:07

Beitrag von wojoeraf »

Danke Epllus,

zumindest weiß ich jetzt warum es so ist und kenne eine Möglichkeit, das zu richten.

Wer die passende Option kennt, darf sie gerne noch hier reinschreiben. :)

Viele Grüße
Rafi

Antworten