Anzeige:
Ergebnis 1 bis 4 von 4

Thema: pgfplot background nur zwischen x1 und x2

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.08.2008
    Beiträge
    62

    pgfplot background nur zwischen x1 und x2

    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:

    Code:
    \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,backgrounds,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
    Geändert von J0Sch (11-07-2012 um 13:51 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    04.08.2008
    Beiträge
    62
    Hallo,

    eventuell könnte ich mein Problem über:

    Code:
    \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
    Code:
    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
    Geändert von J0Sch (14-07-2012 um 08:19 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.07.2010
    Beiträge
    96
    Ja, Du kannst die Achsenlimits auslesen: das geht mit \pgfkeysvalueof{/pgfplots/ymin} (es gibt entsprechend xmin, xmax, ymin, ymax):

    Code:
    	\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})
    };

  4. #4
    Registrierter Benutzer
    Registriert seit
    04.08.2008
    Beiträge
    62
    Hallo Christian,

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

    Grüße Josch

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •