5
1

Hallo zusammen,

ich möchte gerne in einer pgfplots Grafik nur einen bestimmten Bereich transparent einfärben. Am besten erklärt sich das Ganze anhand des MB. Der Bereich zwischen den beiden blauen Linien soll bspw. transparent blau eingefärbt werden. Ich hab den Bereich durch zwei vertikale Linien abgegrenzt. Ich dachte, vielleicht gibt es ja die Möglichkeit, die Fläche zwischen zwei Graphen einzufärben. Andere Vorschläge sind natürlich auch willkommen. Vielen Dank schon mal.

Code, hier editierbar zum Übersetzen:
\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{dateplot}
\usepackage{tikz}
\usetikzlibrary{}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
date coordinates in=x,
xmin=2012-01-01,
xticklabel=\day.\month,
]
\addplot [no markers,blue]coordinates {
(2012-02-12, -1)
(2012-02-12, 1)
};
\addplot [no markers,blue]coordinates {
(2012-03-17, -1)
(2012-03-17, 1)
};
\addplot [red]coordinates {
(2012-01-01, -1)
(2012-02-17, -0.7)
(2012-02-27, -0.2)
(2012-03-17, 0)
(2012-03-19, -0.3)
(2012-04-7, 0.4)
(2012-04-20, 0.3)
};
\end{axis}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

gefragt 01 Nov '13, 11:42

josephine's gravatar image

josephine
944263035
Akzeptiert-Rate: 0%

bearbeitet 01 Nov '13, 12:56

Thorsten's gravatar image

Thorsten
1.6k325


Es ist möglich, direkt auf das Koordinatensystem innerhalb der Achsen zuzugreifen (axis cs). Daher lässt sich für den in Frage kommenden Bereich einfach ein Rechteck zeichnen.

Code, hier editierbar zum Übersetzen:
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
date coordinates in=x,
xmin=2012-01-01,
xticklabel=\day.\month,
ymin=-1,
ymax=1
]
\addplot [red] coordinates {
(2012-01-01,-1)
(2012-02-17,-0.7)
(2012-02-27,-0.2)
(2012-03-17,0)
(2012-03-19,-0.3)
(2012-04-7,0.4)
(2012-04-20,0.3)
};
\fill[gray,fill opacity=0.25] (axis cs:2012-02-12,-1) rectangle (axis cs:2012-03-17,1);
\end{axis}
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Aus mir unbekannten Gründen mussten die obere und untere Grenze auf der Ordinate explizit gesetzt werden.


alt text

Permanenter link

beantwortet 01 Nov '13, 12:54

Thorsten's gravatar image

Thorsten
1.6k325
Akzeptiert-Rate: 58%

Hi Thorsten,

vielen dank für deine Antwort. Hat mir sehr weitergeholfen.

(02 Dez '13, 07:51) josephine

Update

Ab Version 1.10 von pgfplots kann man dafür einfach die pgfplotslibrary fillbetween nutzen:

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usepgfplotslibrary{
dateplot,
fillbetween
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
date coordinates in=x,
xmin=2012-01-01,
xticklabel=\day.\month,
]
\addplot [red] coordinates {
(2012-01-01,-1)(2012-02-17,-0.7)(2012-02-27,-0.2)(2012-03-17,0)
(2012-03-19,-0.3)(2012-04-7,0.4)(2012-04-20,0.3)};
% Füllung:
\path[name path=T](rel axis cs:0,1)--(rel axis cs:1,1); % obere Achse
\path[name path=B](rel axis cs:0,0)--(rel axis cs:1,0); % untere Achse
\addplot[blue, opacity=0.1]% Fülleigenschaften
fill between [%
of=T and B,% zwischen oberer und unterer Achse
soft clip={domain=2012-02-12:2012-03-17}% Einschränkung des Zeitraumes
];
\end{axis}
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text


Ursprüngliche Antwort:

pgfplots stellt verschiedene Koordinatensysteme zur Verfügung. Wenn man neben dem axis cs noch das rel axis cs verwendet, dann müssen ymin und ymax nicht vorgegeben werden. Im rel axis cs entspricht eine Einheit der Länge der entsprechenden Koordinatenachse, d.h. (rel axis cs:0,0) bezeichnet die Diagrammecke links unten und (rel axis cs:1,1) die Diagrammecke rechts oben.

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\documentclass[margin=5pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\pgfplotsset{compat=1.9}
\newcommand\abschnittfaerben[3][]{%
\fill[#1]
({rel axis cs:0,0}-|{axis cs:#2,0})
rectangle
({rel axis cs:0,1}-|{axis cs:#3,0});
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
date coordinates in=x,
xmin=2012-01-01,
xticklabel=\day.\month,
]
%
\abschnittfaerben[blue,fill opacity=0.1]{2012-02-12}{2012-03-17}
%
\addplot [red] coordinates {
(2012-01-01,-1)(2012-02-17,-0.7)(2012-02-27,-0.2)(2012-03-17,0)
(2012-03-19,-0.3)(2012-04-7,0.4)(2012-04-20,0.3)};
\end{axis}
\end{tikzpicture}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 01 Nov '13, 21:57

esdd's gravatar image

esdd
17.8k304257
Akzeptiert-Rate: 62%

bearbeitet 07 Mär '14, 21:31

Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×298
×54
×28
×3

gestellte Frage: 01 Nov '13, 11:42

Frage wurde gesehen: 17,879 Mal

zuletzt geändert: 07 Mär '14, 21:31

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×