我有一个包含国家和数据的样本。我想制作一个“梳状”图来显示每个国家样本涵盖的年份。
我的数据是这样的:
#########################################################
country,year
AUT,1998
AUT,1999
AUT,2000
GER,1999
GER,2000
GER,2001
GER,2002
FRA,2000
FRA,2001
FRA,2002
FRA,2003
#########################################################
我想要得到类似的东西:
AUT ---------------
FRA -------------------
GER --------------------
1998|1999|2000|2001|2002|2003
数据来自另一个软件,我可以对其进行处理,然后再将其传递给 LaTeX。例如:
- 我可以按国家、年份等进行排序,然后将其传递给 LaTeX。
- 目前,一些国家年份在数据中重复,但我可以将其压缩为国家年份的唯一出现次数
- 如果这样更容易操作的话,我还可以创建形式为 [country,minyear,maxyear] 的新数据集
pgfplots
。
我尝试了 MWE,但 addplot 命令当然是假的,并产生错误:
\documentclass{minimal}
\usepackage{filecontents}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\usepackage{pgfplotstable}
\begin{filecontents}{CountryYears.csv}
#########################################################
country,year
AUT,1998
AUT,1999
AUT,2000
GER,1999
GER,2000
GER,2001
GER,2002
FRA,2000
FRA,2001
FRA,2002
FRA,2003
#########################################################
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread[col sep=comma]{CountryYears.csv}\loadeddata
\addplot table[y=year,x=country,ybar] {\loadeddata}; % Plotting the data
\end{axis}
\end{tikzpicture}
\end{document}
答案1
这应该可以帮助你入门。
\documentclass{standalone}
\usepackage{filecontents}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\usepackage{pgfplotstable}
\begin{filecontents}{CountryYears.csv}
#########################################################
country,year
AUT,1998
AUT,1999
AUT,2000
GER,1999
GER,2000
GER,2001
GER,2002
FRA,2000
FRA,2001
FRA,2002
FRA,2003
#########################################################
\end{filecontents}
\begin{document}
\pgfplotstableset{columns/country/.style={string type}}
\pgfplotstableread[col sep=comma]{CountryYears.csv}\loadeddata
\begin{tikzpicture}
\begin{axis}[symbolic y coords={AUT,GER,FRA},ytick=data,
x tick label style={/pgf/number format/.cd,%
scaled x ticks = false,
set thousands separator={},
fixed},]
\addplot[only marks] table[x=year,y=country] \loadeddata;
\end{axis}
\end{tikzpicture}
\end{document}
如果要连接点,可以在数据点之间添加空行以造成间隙。但是,\pgfplotstableread 会忽略空行。
\documentclass{standalone}
\usepackage{filecontents}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.4}
\usepackage{pgfplotstable}
\begin{filecontents}{CountryYears.csv}
#########################################################
country,year
AUT,1998
AUT,1999
AUT,2000
GER,1999
GER,2000
GER,2001
GER,2002
FRA,2000
FRA,2001
FRA,2002
FRA,2003
#########################################################
\end{filecontents}
\begin{document}
\pgfplotstableset{columns/country/.style={string type},col sep=comma}
\begin{tikzpicture}
\begin{axis}[symbolic y coords={AUT,GER,FRA},ytick=data,
x tick label style={/pgf/number format/.cd,%
scaled x ticks = false,
set thousands separator={},
fixed}]
\addplot table[x=year,y=country] {CountryYears.csv};
\end{axis}
\end{tikzpicture}
\end{document}