Säulendiagremm ohne Umrandung der Symbole in Legende

Tabellen und Grafiken erstellen und anordnen


chris_Waechter

Säulendiagremm ohne Umrandung der Symbole in Legende

Beitrag von chris_Waechter »

Ich habe eine ganze Menge Diagramme, sowohl Säulen- als auch Linien. Ich versuche nun eine globale Einstellung zu finden, die bei den Säulendiagramme die schwarze Umrandung der Säulen ausschaltet. Das habe ich auch bereits eingestellt bekommen, aber in der Legende sind nach wie vor schwarze Linien um die Balkensymbole.

Ich habe hier mit draw opacity=0 schon eine Teillösung gefunden, aber damit verschwindet auch der Rahmen um die Legende, den ich aber gerne behalten würde.

Ist das überhaupt global machbar oder muss ich das bei jedem Diagramm von Hand eintragen?
\documentclass[12pt, oneside, a4paper]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english, ngerman]{babel}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest,
			 width = 0.8\textwidth,
			 height = 0.4\textheight,
			 every axis/.append style = {every node/.style = {{yshift = -8pt}, sloped}},
			 every x tick label/.append style = {text height = 2ex},
			 every tick/.append style = {scaled ticks = true},
			 every axis legend/.append style={at = {(0.5,1.05)},
											  anchor = south,
											  legend columns = -1,
											  no markers, 
											  nodes = {right, inner xsep=5pt},
											  shape = rectangle,
											  fill = white},
			 every axis plot/.append style = {draw = none},
			 every axis plot legend/.append style = {draw opacity = 0}
			 }

\begin{document}

\begin{figure} [H]
\begin{tikzpicture}
	\begin{axis}[
	ybar,
	legend entries = {I\textsubscript{Soll}, Approximiert}
	]
	\addplot [fill=blue] {x};
	\addplot [fill=orange] {0.5*x};
	\end{axis}
\end{tikzpicture}

\begin{tikzpicture}
	\begin{axis}[%
	ylabel = {Beschriftung},
	legend entries = {I\textsubscript{Soll}, Approximiert},
	]
	\addplot [draw=blue, smooth] {sin(4*x)};
	\addplot [draw=orange, smooth] {cos(2*x)};
	\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}
[/url]

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

Beitrag von esdd »

Die einfachste Möglichkeit ist die Umrandung in der gleichen Farbe wie die Füllung zu zeichnen.

Du hast in dem Beispiel aber ein Problem mit der Balkenbreite. Mir ist jetzt nicht klar, ob die orangenen Balken auf oder neben den blauen sein sollen. In Deinem Code sind sie versetzt und überlagern sich.
\documentclass[12pt]{scrreprt} 

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[english, ngerman]{babel} 

\usepackage{pgfplots} 
\pgfplotsset{compat=newest, 
           width = 0.8\textwidth, 
           height = 0.4\textheight, 
           %every axis/.append style = {every node/.style = {{yshift = -8pt}, sloped}}, 
           %every x tick label/.append style = {text height = 2ex}, 
           every tick/.append style = {scaled ticks = true}, 
           every axis legend/.append style={at = {(0.5,1.05)}, 
                                    anchor = south, 
                                    legend columns = -1, 
                                    no markers, 
                                    nodes = {right, inner xsep=5pt}, 
                                    %shape = rectangle, 
                                    %fill = white
                                    }, 
           ybar/.append style = {every axis plot/.append style={fill}}, 
           } 

\begin{document} 

\begin{tikzpicture} 
    \newcommand{\balkenbreite}{10pt} % Balkenbreite für Balkendiagram
    \begin{axis}[ 
    ybar=-\balkenbreite,
    bar width=\balkenbreite,
    legend entries = {I\textsubscript{Soll}, Approximiert} 
    ] 
    \addplot [blue] {x}; 
    \addplot [orange] {0.5*x}; 
    \end{axis} 
\end{tikzpicture} 

\begin{tikzpicture} 
    \begin{axis}[ 
    ybar,
    bar width=3pt,
    legend entries = {I\textsubscript{Soll}, Approximiert} 
    ] 
    \addplot [blue] {x}; 
    \addplot [orange] {0.5*x}; 
    \end{axis} 
\end{tikzpicture}

\begin{tikzpicture} 
    \begin{axis}[% 
    ylabel = {Beschriftung}, 
    legend entries = {I\textsubscript{Soll}, Approximiert}, 
    ] 
    \addplot [blue, smooth] {sin(4*x)}; 
    \addplot [orange, smooth] {cos(2*x)}; 
    \end{axis} 
\end{tikzpicture} 

\end{document}
Alternativ geht auch:
\documentclass[12pt]{scrreprt} 

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage[english, ngerman]{babel} 

\usepackage{pgfplots} 
\pgfplotsset{compat=newest, 
           width = 0.8\textwidth, 
           height = 0.4\textheight, 
           %every axis/.append style = {every node/.style = {{yshift = -8pt}, sloped}}, 
           %every x tick label/.append style = {text height = 2ex}, 
           every tick/.append style = {scaled ticks = true}, 
           every axis legend/.append style={at = {(0.5,1.05)}, 
                                    anchor = south, 
                                    legend columns = -1, 
                                    no markers, 
                                    nodes = {right, inner xsep=5pt}, 
                                    %shape = rectangle, 
                                    %fill = white
                                    }, 
           } 

\begin{document} 

\begin{tikzpicture} 
    \newcommand{\balkenbreite}{10pt} % Balkenbreite für Balkendiagram
    \begin{axis}[ 
    ybar=-\balkenbreite,
    bar width=\balkenbreite,
    legend entries = {I\textsubscript{Soll}, Approximiert} 
    ] 
    \addplot [blue,fill] {x}; 
    \addplot [orange,fill] {0.5*x}; 
    \end{axis} 
\end{tikzpicture} 
\end{document}
Gruß
Elke

chris_Waechter

Beitrag von chris_Waechter »

Vielen Dank! Habe deinen ersten Vorschlag angewandt und funktioniert super! :D

Antworten