TikZ Plot: Gitter, Achsenbeschriftung

Tabellen und Grafiken erstellen und anordnen


Kugli93
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Mi 24. Jun 2015, 17:16

TikZ Plot: Gitter, Achsenbeschriftung

Beitrag von Kugli93 »

Hallo,

ich möchte in meine Bachelorarbeit einen Grafen einfügen. Bisher habe ich folgenden Code:
\begin{figure}[!h]
	\centering
	\begin{tikzpicture}
	\begin{axis}[
	    width=12.0cm,
	    height=6cm,
		domain=0.1:1000,
		xmin=1, xmax=1100,
		ymin=90, ymax=103,
		xmode=log,
		xlabel={$P_S in [kW]$},
		ylabel={$\eta in [%]$},
		samples=400,
		axis y line=center,
		axis x line=middle,
		]
		\addplot+[mark=none, line width = 1.5] {(-1.459e-07*x^4 + 0.0003945*x^3 + 98.49*x^2 + 1784*x + 430.9)/(x^2 + 18.49*x + 5.043)};
	\end{axis}
	\end{tikzpicture}
	\caption{Wirkungsgrad eines Synchronmotors}
	\cite{Mueller.2008}
	\label{fig:Wirkungsgrad}
\end{figure}


der Plot klappt soweit ganz gut. Allerdings hätte ich gerne ein Paar machen anderst, die ich nicht hinbekomme:

1. Die Achsen sollten unten bzw links beschriftet sein statt direkt am Achsenende.

2. ich hätte gerne ein Gitter, das auf der x-Achse die Log Skala und nach oben jede zweite ganze Zahl, also 90, 92, 94 usw. einzeichnet.

Wäre super wenn mir dabei jemand helfen könnte, vielen dank :)

Liebe Grüße,
Philipp

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

Beitrag von esdd »

Das ist mal ein vernünftiges MWE, Danke. Es fehlt lediglich beim ylabel ein Backslash vor dem Prozentzeichen.

Die Position der Achsenbeschriftung kannst Du erst nach dem Ändern axis lines=center anpassen, da die Option sonst wieder die Voreinstellung setzt. Mir ist jetzt nicht ganz klar, was Du mit unten bzw. links meinst. Aber das lässt sich noch einfach anpassen.

Das Gitter bekommst Du mit grid. Sollen dabei in Deinem Beispiel für die x-Richtung nur die Hauptlinien gezeichnet werden, kannst Du major als Wert dafür verwenden.
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}

    \begin{tikzpicture} 
    \begin{semilogxaxis}[
       axis lines=center,% ändert Position von x und y Achse
       width=12.0cm, 
       height=6cm, 
       domain=0.1:1000, 
       xmin=1, xmax=1100, 
       ymin=90, ymax=103,
       ytick={92,94,...,102},
       xlabel={$P_S in [kW]$}, 
       ylabel={$\eta in [\%]$},
       label style={% erst nach Option axis lines verwenden
        at={(ticklabel cs:0.5)},anchor=near ticklabel,sloped},
       grid=both,% Haupt- und Nebenlinien 
       samples=400, 
       ] 
       \addplot+[mark=none, line width = 1.5] {(-1.459e-07*x^4 + 0.0003945*x^3 + 98.49*x^2 + 1784*x + 430.9)/(x^2 + 18.49*x + 5.043)}; 
    \end{semilogxaxis} 
    \end{tikzpicture} 
\end{document}
Gruß
Elke

Bild
Dateianhänge
gl_grid.png
gl_grid.png (21.95 KiB) 7940 mal betrachtet

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}

\begin{document}
\begin{figure}[htbp]
    \centering
    \begin{tikzpicture}
    \begin{semilogxaxis}[
       axis lines=center,% ändert Position von x und y Achse
       width=12.0cm,
       height=6cm,
       domain=0.1:1000,
       xmin=1, xmax=1100,
       ymin=90, ymax=103,
       ytick={92,94,...,102},
       xlabel={$P_S$ in [\si{\kW}]},
       ylabel={$\eta$ in [\si{\percent}]},
       label style={% erst nach Option axis lines verwenden
        at={(ticklabel cs:0.5)},anchor=near ticklabel,sloped},
       grid=both,% Haupt- und Nebenlinien
       samples=400,
    ]
    \addplot+[mark=none, line width = 1.5] {(-1.459e-07*x^4 + 0.0003945*x^3 + 98.49*x^2 + 1784*x + 430.9)/(x^2 + 18.49*x + 5.043)};
    \end{semilogxaxis}
    \end{tikzpicture}
    \caption{Wirkungsgrad eines Synchronmotors~\cite{Mueller.2008}}
    \label{fig:Wirkungsgrad} 
\end{figure}
\end{document}
@Kugli93

Ich habe dem Quelltext von Elke noch Änderungen der Achsenbeschriftungen und der Position Deines Literaturverweises hinzugefügt. Die Darstellung des Prozentzeichens mag gleich bleiben, aber die Einheit der Leistung steht nun aufrecht. Ich vermute, diese Abbildung wird nicht der einzige Ort in Deiner Arbeit sein, an dem das Paket [d]siunitx[/d] nützlich sein dürfte.

Kugli93
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Mi 24. Jun 2015, 17:16

Beitrag von Kugli93 »

Cool! Danke euch beiden!!

genau so wollte ich die Achsenbeschriftung :)

Könnt ihr mir nur noch bitte kurz erklären was die Befehle machen, speziell:
abel style={% erst nach Option axis lines verwenden 
		at={(ticklabel cs:0.5)},anchor=near ticklabel,sloped},
 
Meine Einheiten habe ich bisher immer über zB: $\mrm{m^2}$ geschrieben. Hatte das nur hier im Plot noch nicht, weil es eh noch nicht funktioniert hat wie ich es wollte, sorry :D
Bringt mir das Paket siunitx dann noch einen Vorteil?

Liebe Grüße,
Philipp

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2466
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Kugli93 hat geschrieben:Könnt ihr mir nur noch bitte kurz erklären was die Befehle machen, speziell:
label style={% erst nach Option axis lines verwenden 
		at={(ticklabel cs:0.5)},anchor=near ticklabel,sloped},
Mit diesen Einzelheiten des Pakets [d]pgfplots[/d] kenne ich mich nicht aus. Außer einer Antwort von Elke oder anderen fachkundigen Lesern dieses Threads bliebe da noch die möglicherweise aufschlussreiche Lektüre der entsprechenden Abschnitte in der Dokumentation des Pakets.
Kugli93 hat geschrieben:Meine Einheiten habe ich bisher immer über zB: $\mrm{m^2}$ geschrieben. Hatte das nur hier im Plot noch nicht, weil es eh noch nicht funktioniert hat wie ich es wollte, sorry :D
Bringt mir das Paket siunitx dann noch einen Vorteil?
Das kommt darauf an, wieviel Du zu ändern hättest. In einer Antwort auf TeXWelt werden ein paar Eigenschaften des Pakets angesprochen.

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

Beitrag von esdd »

Kugli93 hat geschrieben:Könnt ihr mir nur noch bitte kurz erklären was die Befehle machen, speziell:
label style={% erst nach Option axis lines verwenden 
		at={(ticklabel cs:0.5)},anchor=near ticklabel,sloped},
Mit (ticklabel cs:0.5) wird unter die Mitte der beschrifteten Achse unter Berücksichtigung der Beschriftung ausgewählt. anchor=near ticklabel wählt den dazu passenden Anker des Achsenbeschriftungsnode aus, um ihn dort einzufügen und sloped passt die Richtung der Beschriftung an die Richtung der Achse an. Allerdings wird die x-Achsenbeschriftung in dem Beispiel mit dem north east Anker eingefügt, weshalb es vielleicht besser wäre den Anker jeweils explizit vorzugeben

xlabel style={at={(xticklabel cs:0.5)},anchor=north},
ylabel style={at={(yticklabel cs:0.5)},anchor=south,,rotate=90},
Es geht aber auch kürzer und einfacher mit
xlabel near ticks,ylabel near ticks,
Sowohl bei pgfplots als auch tikz gibt es fast immer mehrere Wege ein gewünschtes Ziel zu erreichen.
\documentclass{scrartcl} 
\usepackage[ngerman]{babel} 
\usepackage{siunitx} 
\usepackage{pgfplots} 
\pgfplotsset{compat=1.12} 

\begin{document} 
\begin{figure}[htbp] 
     \centering 
     \begin{tikzpicture} 
     \begin{semilogxaxis}[ 
        axis lines=center,% ändert Position von x und y Achse 
        width=12.0cm, 
        height=6cm, 
        domain=0.1:1000, 
        xmin=1, xmax=1100, 
        ymin=90, ymax=103, 
        ytick={92,94,...,102}, 
        xlabel={$P_S$ in [\si{\kW}]}, 
        ylabel={$\eta$ in [\si{\percent}]},%
        xlabel near ticks,ylabel near ticks,% Positionieren der Achsenbeschriftung
        grid=both,% Haupt- und Nebenlinien 
        samples=400, 
     ] 
     \addplot+[mark=none, line width = 1.5] {(-1.459e-07*x^4 + 0.0003945*x^3 + 98.49*x^2 + 1784*x + 430.9)/(x^2 + 18.49*x + 5.043)};
     \end{semilogxaxis} 
     \end{tikzpicture} 
     \caption{Wirkungsgrad eines Synchronmotors~\cite{Mueller.2008}} 
     \label{fig:Wirkungsgrad} 
\end{figure} 
\end{document}

Kugli93
Forum-Anfänger
Forum-Anfänger
Beiträge: 19
Registriert: Mi 24. Jun 2015, 17:16

Beitrag von Kugli93 »

okay super, das ist ja echt einfach, aber gut zu wissen falls ich es mal anders möchte!

Danke euch allen für die schnelle und perfekte Hilfe!!! :) :) :)

Antworten