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