为分组条形图/图表绘制网格线

为分组条形图/图表绘制网格线

又是我...我有一个分组条形图,我想为每个组添加垂直网格线,因为宽度较小时,所有条形图都太靠近彼此,难以查看。

我的 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}

我希望它看起来是这样的:

http://www.faqssys.info/tag/bar-chart/ 或这个 https://no.sharelatex.com/learn/Pgfplots_package#Bar_graphs

网格线不是从年份开始,而是从条形“组”的开始和结束位置开始。

答案1

您可以x tick label as interval结合xmajorgrids=true使用,但需要0.5使用来抵消数据x expr=\thisrow{Year}+0.5。我还建议通过设置来消除组内的间隙ybar=0pt,这会使图稍微平静一些:

\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}

相关内容