Markieren von Bereichen zwischen einer Achse und einem Graph

Tabellen und Grafiken erstellen und anordnen


PeterPan87
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Mi 18. Jan 2017, 21:11

Markieren von Bereichen zwischen einer Achse und einem Graph

Beitrag von PeterPan87 »

Hallo liebe Community,

ich habe folgendes Problem. Ich möchte gerne den Bereich über der blauen Gerade und den Bereich unter der Roten Gerade ausfüllen. Entweder mit einer Schraffur oder komplett leicht transparent. In etwa so wie es am linken Rand zu erkennen ist. Leider habe ich die Logik nicht verstanden mit der man den Bereich angibt in der die Markierung platziert werden soll. Ein lauffähiges Minimalbeispiel habe ich euch unten angegeben.

Vielen lieben Dank für eure Hilfe und schönen Sonntag
\documentclass[margin=10pt]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\usepgfplotslibrary{fillbetween}
\begin{document}
		
	\begin{tikzpicture} 
	\begin{axis}[domain=0.125:220, samples=400, xmin=0, xmax=100, ymin=0, ymax=100, xlabel = $x~Achse$, ylabel = $y~Achse$]
	\path[name path=axisy] (axis cs:0,100) -- (axis cs:70,100);
	\path[name path=axisx] (axis cs:30,0.01) -- (axis cs:100,70);
	\addplot+[mark=none, name path=A] {\x+30} node[above, rotate=40] at (20,100) {$Instabil$} node[above, color= black, rotate=40] at (50,70) {$Stabil$};
	\addplot+[mark=none, name path=B] {\x-30} node[below, rotate=40] at (75,55) {$Instabil$};
	
	 \addplot [
	 thick,
	 color=blue,
	 fill=blue, 
	 fill opacity=0.05
	 ]
	 fill between[
	 of=A and axisy,
	 soft clip={domain=0:1},
	 ];
	\end{axis} 
	\end{tikzpicture}
\end{document}

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

Beitrag von esdd »

Zunächst solltest Du Dir unbedingt Was bedeutet die Kompatibilitätsangabe "compat=..." bei pgfplots?. Die derzeit aktuelle pgfplots Version ist eigentlich 1.15. Damit auch der Overleaf-Link funktioniert, verwende ich in dem folgenden Beispiel aber 1.14.

Seit Version 1.11 ist axis cs das Standardkoordinatensystem der axis Umgebung.

In Deinem Beispiel kannst Du immer die komplette Achse als Pfad verwenden und da die Geraden die Achsen schneiden, brauchst Du nicht mal soft clip:


\documentclass[margin=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}% <- immer compat setzen!
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture} 
\begin{axis}[
  domain=0:100,% geändert
  %samples=400,% für Geraden würde sogar samples=2 reichen
  xmin=0, xmax=100,
  ymin=0, ymax=100,
  xlabel = $x~Achse$, ylabel = $y~Achse$
]
\path[name path=axisy] (0,100) -- (100,100);
\path[name path=axisx] (0,0) -- (100,0);
\addplot+[mark=none, name path=A] {\x+30}
  node[above, rotate=40] at (20,70) {$Instabil$}
  node[above, color= black, rotate=40] at (50,40) {$Stabil$}
;
\addplot+[mark=none, name path=B] {\x-30} 
  node[below, rotate=40] at (75,20) {$Instabil$}
;

\addplot [blue,fill opacity=0.05]
  fill between[of=A and axisy]
;
\addplot [red,fill opacity=0.05]
  fill between[of=B and axisx]
;
\end{axis} 
\end{tikzpicture}
\end{document}
Bild
Dateianhänge
gl_fillbetween.png
gl_fillbetween.png (20.62 KiB) 1522 mal betrachtet

PeterPan87
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Mi 18. Jan 2017, 21:11

Beitrag von PeterPan87 »

Hallo esdd,
vielen Dank! Die Abb sieht nun genau so aus wie ich es mir vorgestellt habe.
Interessant war das ich \usepackage{transparent} in der Präambel hatte, erst als ich es deaktiviert habe konnte die Abb. korrekt darstellen.
Weis jemand woran das liegt?

VG

Antworten