Säulendiagramm Probleme

Tabellen und Grafiken erstellen und anordnen


Friedolien
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 7. Mai 2018, 21:23

Säulendiagramm Probleme

Beitrag von Friedolien »

Hallo, ich bin gerade am ausarbeiten einer Arbeit für meine Uni. Dafür muss ich gerade ein paar Säulendiagramm basteln. Folgende 3 habe ich bereits:
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}

\begin{document}

\begin{tikzpicture}
	\begin{axis}[
		x tick label style={
			/pgf/number format/1000 sep=},
		symbolic x coords={Ohne,Sinus,Sprung},
		ylabel=$H_{MSE}$,
		enlargelimits=0.15,
		ybar,
		bar width=7pt,
		xtick={Ohne,Sinus,Sprung},
		xmin=Ohne, xmax=Sprung,
		ytick={100,102.5,...,125},
		grid, 
		legend entries={PID,MRAC,NN},
		legend columns=3,
		legend style={anchor=south,legend pos=north east, yshift=1cm, draw=none
		}		
		]
		\addplot 
		coordinates {(Ohne,117.38) (Sinus,) (Sprung,)};
		
		\addplot 
		coordinates {(Ohne,117.84) (Sinus,122.24) (Sprung,101.96)};
		
		\addplot 
		coordinates {(Ohne,118.29) (Sinus,118.63) (Sprung,101.51)};
	\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
	\begin{axis}[
		x tick label style={
			/pgf/number format/1000 sep=},
		symbolic x coords={Ohne,Sinus,Sprung},
		ylabel=$\theta_{MSE}$,
		enlargelimits=0.15,
		ybar,
		bar width=7pt,
		xtick={Ohne,Sinus,Sprung},
		xmin=Ohne, xmax=Sprung,
		ytick={0,0.0005,...,0.005},
		grid, 
		legend entries={PID,MRAC,NN},
		legend columns=3,
		legend style={anchor=south,legend pos=north east, yshift=1cm, draw=none
		}		
		]
		\addplot 
		coordinates {(Ohne,0.0019) (Sinus,) (Sprung,)};
		
		\addplot 
		coordinates {(Ohne,0.0015) (Sinus,0.0046) (Sprung,0.0026)};
		
		\addplot 
		coordinates {(Ohne,0.0015) (Sinus,0.0016) (Sprung,0.0013)};
	\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
	\begin{axis}[
		x tick label style={
			/pgf/number format/1000 sep=},
		symbolic x coords={Ohne,Sinus,Sprung},
		ylabel=$q_{MSE}$,
		enlargelimits=0.15,
		ybar,
		bar width=7pt,
		xtick={Ohne,Sinus,Sprung},
		xmin=Ohne, xmax=Sprung,
		ytick={0,0.01,...,0.1},
		grid, 
		legend entries={PID,MRAC,NN},
		legend columns=3,
		legend style={anchor=south,legend pos=north east, yshift=1cm, draw=none
		}		
		]
		\addplot 
		coordinates {(Ohne,0.0058) (Sinus,) (Sprung,)};
		
		\addplot 
		coordinates {(Ohne,0.0029) (Sinus,0.0343) (Sprung,0.0210)};
		
		\addplot 
		coordinates {(Ohne,0.0170) (Sinus,0.0822) (Sprung,0.0457)};
	\end{axis}
\end{tikzpicture}
\end{document}
Zu den Graphen: Prinzipiell sollen die Graphen gleich aussehen von ihrer Form. Mein Problem ist die y-Beschriftung. Obwohl ich diese bspweise bei dem ersten Diagramm von 100-125 laufen lasse, beginnt die y-Achse noch unter 100.
Besonders deutlich beim letzten. Eingegrenzt von 0-0.1, aber die Balken fangen innerhalb des Diagramms an, sollten aber wirklich ganz unten mit der definierten Zahl schon beginnen. Weiß jemand Rat? Die Grenzen ergeben sich aus den Messwerten, die in den Koordinaten geschrieben stehen. Zweites Probelm: Ist es vllt möglich die 10er Potenz schöner anzuordnen, oder gar eine andere, schönere Lösung zu finden?

P.S.:Ach noch vergessen: Begrenzung nach oben wird auch nicht genau eingehalten. geht immer noch etwas drüber als die angegebene maximale Angabe der y-Achse

Vielen Dank für eure Hilfe
Friedolien

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

Beitrag von esdd »

Gib ymin und ymax vor und ergänze enlarge y limits=0, also beispielsweise für das letzte Diagramm:
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{pgfplots}% lädt auch tikz
\pgfplotsset{compat=1.12}% aktuell wäre 1.16

\begin{document}

\begin{tikzpicture}
   \begin{axis}[
      x tick label style={
         /pgf/number format/1000 sep=},
      symbolic x coords={Ohne,Sinus,Sprung},
      ylabel=$q_{MSE}$,
      enlargelimits=0.15,
      ybar,
      bar width=7pt,
      xtick={Ohne,Sinus,Sprung},
      xmin=Ohne, xmax=Sprung,
      ytick={0,0.01,...,0.1},
      ymin=0,ymax=0.1,% <- eingefügt
      enlarge y limits=0,% <- eingefügt
      grid, 
      legend entries={PID,MRAC,NN},
      legend columns=3,
      legend style={anchor=south,legend pos=north east, yshift=1cm, draw=none
      }      
      ]
      \addplot 
      coordinates {(Ohne,0.0058) (Sinus,) (Sprung,)};
      
      \addplot 
      coordinates {(Ohne,0.0029) (Sinus,0.0343) (Sprung,0.0210)};
      
      \addplot 
      coordinates {(Ohne,0.0170) (Sinus,0.0822) (Sprung,0.0457)};
   \end{axis}
\end{tikzpicture}
\end{document}

Friedolien
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 7. Mai 2018, 21:23

Beitrag von Friedolien »

Super das hat geklappt. Hab ich nicht gefunden gehabt, diese Lösung.
Hätte noch ein Anliegen: Ich möchte in einem separaten Diagramm, was den gleichen Aufbau wie das 3. Balkendiagramm haben soll, folgendes einbauen:

y-Achse soll gleich bleiben und dargestellt werden soll:

Ohne,Sinus,Sprung, dann nochmal Ohne,Sinus,Sprung und ein letztes mal diese Kombi, sodass ich diese 3 mal nebeneinander habe. zu diesen einzelnen labels sollen dann jeweils 2 Balken erstellt werden, wobei bei allen der erste Balken die gleiche Legende und der 2. Balken auch. Unter die x-Achsen label Ohne,Sinus,Sprung müsste dann eine geschweifte Klammer "alles", bei den 2. eine mit t=20 und beim 3. mit t=54.

Ich habe bereits versucht bei \addplot noch mehr sich wiederholende Koord. einzufügen, das klappt aber so leider nicht. Hier mal mein Versuch, der leider nicht klappt. Hoffe es ist verständlich, was ich meine und ich hoffe sehr, mir kann jemand helfen. etwas am verzweifeln...
\begin{tikzpicture}
\begin{axis}[
x tick label style={
	/pgf/number format/1000 sep=},
symbolic x coords={Ohne,Sinus,Sprung},
ylabel=$H_{MSE}$,
enlargelimits=0.15,
ybar,
bar width=7pt,
xtick={Ohne,Sinus,Sprung,Ohne,Sinus,Sprung,Ohne,Sinus,Sprung},
xmin=Ohne, xmax=Sprung,
ytick={0,,...,0.02},
ymin=1,ymax=125,
enlarge y limits=0,
grid, 
legend entries={MRAC,NN},
legend columns=2,
legend style={anchor=south,legend pos=north east, yshift=1cm, draw=none
}		
]

\addplot %MRAC
coordinates {(Ohne,0.00033) (Sinus,0.01748) (Sprung,0.00928)...%alles
			(Ohne,0.00036) (Sinus,0.01923) (Sprung,0.01008)...%t=20
			(Ohne,0.00034) (Sinus,0.00803) (Sprung,0.00129)};%t=54
\addplot %NN
coordinates {(Ohne,0.013068408) (Sinus,0.077251943) (Sprung,0.041750859)...%all
			(Ohne,2.46611E-07) (Sinus,0.07060021) (Sprung,0.032880561)...%t=20
			(Ohne,2.3604E-07) (Sinus,1.11131E-06) (Sprung,6.29655E-07)};%t=54
\end{axis}
\end{tikzpicture}

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

Beitrag von esdd »

Du musst die symbolischen Koordinaten unterschiedlich bezeichnen, auch wenn Du sie gleich beschriftest:
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=.95\textwidth,
x tick label style={
   /pgf/number format/1000 sep=},
symbolic x coords={Ohne1,Sinus1,Sprung1,Ohne2,Sinus2,Sprung2,Ohne3,Sinus3,Sprung3},
ylabel=$H_{MSE}$,
enlargelimits=0.15,
ybar,
bar width=7pt,
xtick=data,
xticklabels={Ohne,Sinus,Sprung,Ohne,Sinus,Sprung,Ohne,Sinus,Sprung},
xticklabel style={rotate=90,anchor=east},
xmin=Ohne1, xmax=Sprung3,
ytick={0,0.01,...,0.08},
ymin=0,ymax=0.08,
enlarge y limits=0,
grid, 
legend entries={MRAC,NN},
legend columns=2,
legend style={anchor=south,legend pos=north east, yshift=1cm, draw=none
}
]

\addplot %MRAC
coordinates {(Ohne1,0.00033) (Sinus1,0.01748) (Sprung1,0.00928) %alles
         (Ohne2,0.00036) (Sinus2,0.01923) (Sprung2,0.01008) %t=20
         (Ohne3,0.00034) (Sinus3,0.00803) (Sprung3,0.00129)};%t=54
\addplot %NN
coordinates {(Ohne1,0.013068408) (Sinus1,0.077251943) (Sprung1,0.041750859) %all
         (Ohne2,2.46611E-07) (Sinus2,0.07060021) (Sprung2,0.032880561) %t=20
         (Ohne3,2.3604E-07) (Sinus3,1.11131E-06) (Sprung3,6.29655E-07)};%t=54
\end{axis}
\end{tikzpicture}
\end{document}

Friedolien
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 7. Mai 2018, 21:23

Beitrag von Friedolien »

Oh, vielen Dank :)

Hast du vielleicht noch eine Idee zu den Klammern oder so, wie ich unter 3 Labels jeweils noch was schrieben kann? die 3er Bündel beziehen sich nämlich jeweils auf 3 unterschiedliche Simulationen

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

Beitrag von esdd »

\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8x]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=.95\textwidth,
x tick label style={
   /pgf/number format/1000 sep=},
symbolic x coords={Ohne1,Sinus1,Sprung1,Ohne2,Sinus2,Sprung2,Ohne3,Sinus3,Sprung3},
ylabel=$H_{MSE}$,
enlargelimits=0.15,
ybar,
bar width=7pt,
xtick=data,
xticklabels={Ohne,Sinus,Sprung,Ohne,Sinus,Sprung,Ohne,Sinus,Sprung},
xticklabel style={rotate=90,anchor=east},
xmin=Ohne1, xmax=Sprung3,
ytick={0,0.01,...,0.08},
ymin=0,ymax=0.08,
enlarge y limits=0,
grid, 
legend entries={MRAC,NN},
legend columns=2,
legend style={anchor=south,legend pos=north east, yshift=1cm, draw=none
}
]

\addplot %MRAC
coordinates {(Ohne1,0.00033) (Sinus1,0.01748) (Sprung1,0.00928) %alles
         (Ohne2,0.00036) (Sinus2,0.01923) (Sprung2,0.01008) %t=20
         (Ohne3,0.00034) (Sinus3,0.00803) (Sprung3,0.00129)};%t=54
\addplot %NN
coordinates {(Ohne1,0.013068408) (Sinus1,0.077251943) (Sprung1,0.041750859) %all
         (Ohne2,2.46611E-07) (Sinus2,0.07060021) (Sprung2,0.032880561) %t=20
         (Ohne3,2.3604E-07) (Sinus3,1.11131E-06) (Sprung3,6.29655E-07)};%t=54
\path (axis cs:{[normalized]-0.5},0) coordinate(c0)
         (axis cs:{[normalized]2.5},0) coordinate(c1)
         (axis cs:{[normalized]5.5},0) coordinate(c2)
         (axis cs:{[normalized]8.5},0) coordinate(c3);
\end{axis}
\begin{scope}[
    every path/.append style={decoration={brace,amplitude=7.5pt},decorate,draw},
    links/.style={xshift=1pt},
    rechts/.style={xshift=-1pt}
    ]
    \path([rechts]c1|-current axis.outer south)
      --node[below=5pt]{alles\strut}
      ([links]c0|-current axis.outer south);
    \path([rechts]c2|-current axis.outer south)
      --node[below=5pt]{$t=20$\strut}
      ([links]c1|-current axis.outer south);
    \path([rechts]c3|-current axis.outer south)
      --node[below=5pt]{$t=54$\strut}
      ([links]c2|-current axis.outer south);
\end{scope}
\end{tikzpicture}
\end{document}
Bild
Dateianhänge
gl_barplotwithbraces.png
gl_barplotwithbraces.png (12.62 KiB) 2705 mal betrachtet

Friedolien
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 7. Mai 2018, 21:23

Beitrag von Friedolien »

Wow. Das ist genau das was ich brauche. Tausend Dank. Das hätte ich so nicht so schnell hinbekommen. Danke!!!

Friedolien
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 7. Mai 2018, 21:23

Beitrag von Friedolien »

Hey, ich bins nochmal. Hab nochmal ein Problem, was nicht unbedingt mit Latex zu tun hat. Prinzipiell soll das Säulendiagramm auch wieder verwendet werden wie oben, jetzt habe ich aber Messwerte von 0.1-10^-17. Dachte mir, da könnte eine logarithmische Darstellung vom Vorteil sein. Wie kriege ich das aber hin, dass 10^-17 am nächsten zur Null (Anfang des Balkens) und nicht wie in meinem Beispiel 10^-1, wie beim normalen Zählen üblich.
Hoffe ihr versteht mein Anliegen. Geht dadrum, dass die größte Potenz ja der kleinste Abstand zur Null ist, und damit auch den kleinsten Balken kriegen soll. Angehängt mein Code mit den Messwerten. Vielleicht hat da jemand eine Idee, wie ich die Messwerte am besten darstellen kann.
\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{pgfplots}% lädt auch tikz
\pgfplotsset{compat=1.12}% aktuell wäre 1.16

\begin{document}


		\begin{tikzpicture}
			\begin{axis}[
				ymode=log,
				width=.80\textwidth,
				x tick label style={
					/pgf/number format/1000 sep=},
				symbolic x coords={Ohne1,Sinus1,Sprung1,Ohne2,Sinus2,Sprung2,Ohne3,Sinus3,Sprung3},
				ylabel=$MSE_{q_m/q}$,
				enlargelimits=0.15,
				ybar,
				bar width=7pt,
				xtick=data,
				xticklabels={Ohne,Sinus,Sprung,Ohne,Sinus,Sprung,Ohne,Sinus,Sprung},
				xticklabel style={rotate=90,anchor=east},
				xmin=Ohne1, xmax=Sprung3,
				%ytick={0,0.0004,0.0008,0.0012,0.0016,0.002,0.0024,0.0028,0.0032,0.0036,0.004},
				%ytick={0,0.01,...,0.09},
				%ymin=0,ymax=10^(-7),
				enlarge y limits=0,
				grid,
				legend entries={MRAC,NN},
				legend columns=2,
				legend style={anchor=south,legend pos=north east, yshift=-1cm, draw=none
				}
				]
				
				\addplot %MRAC
				coordinates {(Ohne1,1.84337E-07) (Sinus1,0.000111274) (Sprung1,1.84337E-07) %alles
					(Ohne2,3.55814E-13) (Sinus2,0.000222146) (Sprung2,3.80855E-13) %t=40
					(Ohne3,2.80453E-18) (Sinus3,0.000262289) (Sprung3,2.92305E-18)};%t=80
				
				\addplot %NN
				coordinates {(Ohne1,0.002766388) (Sinus1,0.000641475) (Sprung1,0.002766388) %all
					(Ohne2,4.52756E-13) (Sinus2,1.43017E-08) (Sprung2,2.6308E-13) %t=40
					(Ohne3,3.39996E-16) (Sinus3,3.75811E-17) (Sprung3,1.96785E-16)};%t=80
				
				%\node at (axis cs:Sinus1,0.0039) {$7.2\cdot10^{-2}$};
				%\node at (axis cs:Sinus2,0.0039) {$8.2\cdot10^{-2}$};
				\path (axis cs:{[normalized]-0.5},0) coordinate(c0)
				(axis cs:{[normalized]2.5},0) coordinate(c1)
				(axis cs:{[normalized]5.5},0) coordinate(c2)
				(axis cs:{[normalized]8.5},0) coordinate(c3);
			\end{axis}
			%add node at y={-5}{Some text}
\begin{scope}[
    every path/.append style={decoration={brace,amplitude=7.5pt},decorate,draw},
    links/.style={xshift=1pt},
    rechts/.style={xshift=-1pt}
    ]
    \path([rechts]c1|-current axis.outer south)
      --node[below=5pt]{alles\strut}
      ([links]c0|-current axis.outer south);
    \path([rechts]c2|-current axis.outer south)
      --node[below=5pt]{$t=20$\strut}
      ([links]c1|-current axis.outer south);
    \path([rechts]c3|-current axis.outer south)
      --node[below=5pt]{$t=54$\strut}
      ([links]c2|-current axis.outer south);
\end{scope}
		\end{tikzpicture}
\end{document}
Zuletzt geändert von Friedolien am Di 29. Mai 2018, 14:23, insgesamt 3-mal geändert.

Friedolien
Forum-Anfänger
Forum-Anfänger
Beiträge: 11
Registriert: Mo 7. Mai 2018, 21:23

Beitrag von Friedolien »

irgendjemand?

Gast

Beitrag von Gast »

Ein unvollständiges Beispiel kommt nicht so gut an.

Antworten