我正在尝试制作一张图表来显示此 MWE 生成的信息:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
Jahr, Treffer
1995-2010, 4
2005, 3
2006, 7
2007, 15
2008, 68
\end{filecontents*}
\usepackage{array}
\usepackage{csvsimple}
\usepackage{pgfplots}
\begin{document}
\csvautotabular{data.csv}
\end{document}
相反\csvautotabular{data.csv}
,我尝试了这个:
\begin{tikzpicture}
\begin{axis}[
ybar,
]
\addplot table [x=Jahr, y=Treffer, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
但出现错误
! Package PGF Math Error: Could not parse input '1995-2010' as a
floating point number, sorry. The unreadable part was near '-2010'..
有没有解决这个问题的好方法,比如将 1995-2010 视为一个字符串并假装它只是另一个年份?
答案1
这个想法来自于这个答案,您可以在其中插入第三列“标签”,.csv
以保存标签字符串,并将年份范围的开始作为绘图的 x 值:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
Jahr, Treffer, Label
1995, 4, 1995-2004
2005, 3, 2005
2006, 7, 2006
2007, 15, 2007
2008, 68, 2008
\end{filecontents*}
\usepackage{array}
\usepackage{csvsimple}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\csvautotabular{data.csv}
\begin{tikzpicture}
\begin{axis}[
ybar,
xtick=data,
xticklabels from table={data.csv}{Label}
]
\addplot table [x=Jahr, y=Treffer, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}
但是标签很长,而且会重叠,所以给你的情节添加一些化妆品。
编辑:我特别喜欢有水平条的想法:
\begin{tikzpicture}
\begin{axis}[
xbar,
ytick=data,
yticklabels from table={data.csv}{Label}
]
\addplot table [y=Jahr, x=Treffer, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}