Seite 1 von 1

Säulendiagremm ohne Umrandung der Symbole in Legende

Verfasst: Do 14. Aug 2014, 15:59
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]

Verfasst: Do 14. Aug 2014, 17:02
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

Verfasst: Fr 15. Aug 2014, 09:48
von chris_Waechter
Vielen Dank! Habe deinen ersten Vorschlag angewandt und funktioniert super! :D