2

Me again.. I have a grouped bar chart and I would like to add vertical grid lines for each group because with a smaller width all bars are too close to each other making it hard to look at.

My MWE:

\documentclass[fontsize=12pt,a4paper,oneside, 
listof=totoc,                   % Tabellen- und Abbildungsverzeichnis ins Inhaltsverzeichnis
bibliography=totoc,             % Literaturverzeichnis ins Inhaltsverzeichnis aufnehmen
titlepage,                      % Titlepage-Umgebung statt \maketitle
headsepline,                    % horizontale Linie unter Kolumnentitel
%abstracton,                    % Überschrift beim Abstract einschalten, Abstract muss dazu in {abstract}-Umgebung stehen
DIV12,                          % auskommentieren, um den Seitenspiegel zu vergrößern
BCOR=0mm,                       % Bindekorrektur, die den Seitenspiegel um 6mm nach rechts verschiebt. geometry package überschreibt diesen Wert
]{scrreprt}

\usepackage[pdftex,dvipsnames]{xcolor}          % einfache Verwendung von Farben in nahezu allen Farbmodellen
\usepackage{pgfplots}           % Zum erstellen von mathematischen Diagrammen, wie Balken, Flächen usw. 
\usetikzlibrary{shapes.symbols,calc}
\definecolor{blueaccent}{RGB}{0,150,214}
\definecolor{darkgray}{RGB}{135,137,139}
\definecolor{mediumgray}{RGB}{185,184,187}
\definecolor{lightgray}{RGB}{229,232,232}
\pgfplotstableread[col sep=comma]{
Jahr, Facebook, Instagram, Snapchat, WhatsApp
2008, 17, 0,0,0
2009,69,0,0,0
2010,197,0,0,0
2011,249,9,0,0
2012,300,9,51,0
2013,343,51,394,394
2014,351,60,703,703
}\mytable

\begin{document}
\begin{figure}
\centering
    \begin{tikzpicture}
      \begin{axis}[
        width=0.8\linewidth,
        ybar,
        bar width=7.5pt,
        ymin=0,
        enlarge x limits={abs=25pt},
        legend style={draw=none,at={(0.5,-0.15)}, text width=2.5cm,
        anchor=north,legend columns=-1},
        xlabel={Jahre},
        ylabel={Fotos pro Tag (in Millionen)},
        symbolic x coords={2008,2009,2010,2011,2012,2013,2014},
        xtick=data,
        cycle list={blueaccent, darkgray, mediumgray, lightgray}
%       cycle list={blueaccent, greenaccent, purpleaccent, orangeaccent}
%       nodes near coords,
%       every node near coord/.append style={rotate=90, anchor=west,font=\footnotesize},
%       nodes near coords align={vertical},
      ]
        \pgfplotsinvokeforeach{Facebook,Instagram,Snapchat,WhatsApp}{
        \addplot+[draw=none, fill, area legend,] table[col sep=comma,x=Jahr,y=#1]{\mytable};
        \addlegendentry{#1}
        }
    \end{axis}
    \end{tikzpicture}
    \caption{Anzahl der täglich hochgeladenen Fotos (in Millionen)}
    \label{fig:AnzahlTäglichFotosSocialNetwork}
\end{figure}
\end{document}

I want it to look this:

http://www.faqssys.info/tag/bar-chart/ or this https://no.sharelatex.com/learn/Pgfplots_package#Bar_graphs

with the grid lines not starting where the year is, instead when the "group" of bars start and end.

2

You can use x tick label as interval together with xmajorgrids=true for this, but you need to offset your data by 0.5 using x expr=\thisrow{Year}+0.5. I would also recommend to remove the gaps within the groups by setting ybar=0pt, that calms the plot down a bit:

\documentclass[fontsize=12pt,a4paper,oneside, 
listof=totoc,                   % Tabellen- und Abbildungsverzeichnis ins Inhaltsverzeichnis
bibliography=totoc,             % Literaturverzeichnis ins Inhaltsverzeichnis aufnehmen
titlepage,                      % Titlepage-Umgebung statt \maketitle
headsepline,                    % horizontale Linie unter Kolumnentitel
%abstracton,                    % Überschrift beim Abstract einschalten, Abstract muss dazu in {abstract}-Umgebung stehen
DIV12,                          % auskommentieren, um den Seitenspiegel zu vergrößern
BCOR=0mm,                       % Bindekorrektur, die den Seitenspiegel um 6mm nach rechts verschiebt. geometry package überschreibt diesen Wert
]{scrreprt}

\usepackage[pdftex,dvipsnames]{xcolor}          % einfache Verwendung von Farben in nahezu allen Farbmodellen
\usepackage{pgfplots}           % Zum erstellen von mathematischen Diagrammen, wie Balken, Flächen usw. 
\usepackage{pgfplotstable}
\definecolor{blueaccent}{RGB}{0,150,214}
\definecolor{darkgray}{RGB}{135,137,139}
\definecolor{mediumgray}{RGB}{185,184,187}
\definecolor{lightgray}{RGB}{229,232,232}
\pgfplotstableread[col sep=comma]{
Jahr, Facebook, Instagram, Snapchat, WhatsApp
2008, 17, 0,0,0
2009,69,0,0,0
2010,197,0,0,0
2011,249,9,0,0
2012,300,9,51,0
2013,343,51,394,394
2014,351,60,703,703
}\mytable

\begin{document}
\begin{figure}
\centering
    \begin{tikzpicture}
      \begin{axis}[
        width=0.8\linewidth,
        ybar=0pt,
        bar width=7.5pt,
        ymin=0,
        enlarge x limits={abs=25pt},
        legend style={draw=none,at={(0.5,-0.15)}, text width=2.5cm,
        anchor=north,legend columns=-1},
        xlabel={Jahre},
        ylabel={Fotos pro Tag (in Millionen)},
        x tick label style={/pgf/number format/1000 sep={}},
        xmajorgrids=true,
        cycle list={blueaccent, darkgray, mediumgray, lightgray},
        x tick label as interval,
      ]
        \pgfplotsinvokeforeach{Facebook,Instagram,Snapchat,WhatsApp}{
        \addplot+[draw=none, fill, area legend,] table [col sep=comma,x expr=\thisrow{Jahr}+0.5,y=#1]{\mytable};
        \addlegendentry{#1}
        }
    \end{axis}
    \end{tikzpicture}
    \caption{Anzahl der täglich hochgeladenen Fotos (in Millionen)}
    \label{fig:AnzahlTäglichFotosSocialNetwork}
\end{figure}
\end{document}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.