PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pgfplot background nur zwischen x1 und x2



J0Sch
10-07-2012, 22:48
n Abend,

ich trage im Moment verschiedene Parameter eines Versuchs über die Versuchsdauer auf. Dabei gibt es einen "stationären Bereich" den ich im Moment mit einer geschwungenen Klammer markiere.
Siehe Minimalbeispiel:


\documentclass[11pt, oneside, a4paper,landscape]{scrreprt}
%====== Einladen von Paketen ================================================== ==============================================
\usepackage[left=2cm, right=2cm, top=2cm, bottom=2cm]{geometry} % Ränder
\usepackage[latin1]{inputenc} % Umlaute
\usepackage[ngerman]{babel} % Sprache
\usepackage[]{scrpage2} % Kopf und Fußzeile ( Linie oben=headsepline, plainheadsepline)
\usepackage{graphicx} % einfügen von Bildern
\usepackage[small, hang, nooneline]{caption} % Bildunterschriften (noonelin = Linksbündig)
\usepackage{amsmath} % für Funktionsgruppe
\usepackage{array}
\usepackage{tikz} % Zeichnen in LaTeX
\usepackage{pgfplots} % Zeichnen von Diagrammen
\usepackage[version=3]{mhchem} % Chemische Ausdrücke darstellen z.B. \ce{CO2}
\usepackage{siunitx}


\usetikzlibrary{arrows,shapes,snakes,automata,back grounds,petri,spy,decorations.pathreplacing}

%====== Stationärer Bereich ================================================== ===============================================
\newcommand{\StatBeginn}{5} % Beginn
\newcommand{\StatEnde} {10} % Ende

\begin{document}

\begin{figure}
\centering
\footnotesize
\begin{tikzpicture}[trim axis left,trim axis right]
\begin{axis}[
title=\large{\ce{CO2}-Beladung $\varphi$ $[\dfrac{g_{CO_2}}{g_{Oxid}}]$},
xmin=0, xmax=20,
xtick={0,2,...,20},
ymin=0, ymax=10,
ytick={0,1,...,10},
width={20cm},
height={10cm},
xlabel={\Large{Temperatur [\si{\celsius}]}},
ylabel={\large{\ce{CO2}-Partialdruck [\si{\bar}]}},
grid=major,
line width=0.6,
axis background/.style={fill=red!10!white}
]

\addplot[black,domain=0:20]{0.5*x};

\draw [decorate,decoration={brace,mirror,raise=-5pt},color=red] (axis cs:\StatBeginn,2)--(axis cs:\StatEnde,2)
node [midway,anchor=north,inner sep=1pt, outer sep=1pt]{\tiny{stationär}};

\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}

Ich würde diese Klammer gerne durch einen farbigen Hintergrund zwischen x1(Start stationärer Bereich) und x2(Ende stationärer Bereich) ersetzen. Hintergrund ist, dass die Diagramme unterschiedliche y-Achsen Skalierungen haben (z.B. Temperatur 400°C-600°C; Partialdruck 0 bar - 0.4 bar ect.) -> ich muss für jedes Diagramm die Höhe (y-Wert) der Klammer manuell ändern. Hoffentlich kann mir da jemand Arbeit ersparen ;)

Viele Grüße,
Josch

J0Sch
14-07-2012, 08:59
Hallo,

eventuell könnte ich mein Problem über:



\addplot[draw=none,fill=red!20!white,mark=none,fill opacity=0.5] coordinates {
(\StatBeginn,0)
(\StatEnde,0)
(\StatEnde,10)
(\StatBeginn,10)
(\StatBeginn,0)
};

oder so was in Richtung


axis background/.style={%
postaction={
path picture={
\fill[opacity=0.5,blue] (axis cs:\StatBeginn,0) rectangle (axis cs:\StatEnde,1000);
}}},


lösen. Mein Problem sind die oberen und unteren Grenzen. Ideal wäre, wenn ich immer von ymin bis ymax zeichnen könnte.
Gibt es eine Möglichkeit die beiden Werte "auszulesen" und als Grenzen einzusetzen?

Da fällt mir ein ist es möglich den x-Wert an das Koordinatensystem anzupassen (also axis cs: ) und den y-Wert nicht? denn wär mein oberer rechter Punkt immer
(axis cs:\StatEnde,(nicht axis cs: )100)...

Viele Grüße,
Josch

Feuersaenger
14-07-2012, 14:10
Ja, Du kannst die Achsenlimits auslesen: das geht mit \pgfkeysvalueof{/pgfplots/ymin} (es gibt entsprechend xmin, xmax, ymin, ymax):



\addplot[draw=none,fill=red!20!white,mark=none,fill opacity=0.5] coordinates {
(\StatBeginn,\pgfkeysvalueof{/pgfplots/ymin})
(\StatEnde,\pgfkeysvalueof{/pgfplots/ymin})
(\StatEnde,\pgfkeysvalueof{/pgfplots/ymax})
(\StatBeginn,\pgfkeysvalueof{/pgfplots/ymax})
(\StatBeginn,\pgfkeysvalueof{/pgfplots/ymin})
};

J0Sch
14-07-2012, 14:43
Hallo Christian,

und wieder mal mein Problem kurz und knapp gelöst.
Vielen Dank!

Grüße Josch