![基本情节](https://linux22.com/image/283543/%E5%9F%BA%E6%9C%AC%E6%83%85%E8%8A%82.png)
我浏览了使用 PSTricks 和 TikZ 绘制饼图和条形图的示例。它们对我来说看起来很复杂。有没有使用 PDFLaTeX 绘制这些图表的简单指南(博客/文本)。学习使用 gnuplot 对于我试图创建的小型演示文稿来说太难了!
答案1
这pgfplots
手册提供了大量信息和教程 - 您还可以在此网站上找到很多很棒的示例。
以下是我制作以下条形图的简单教程,我在回答时用到了它如何让密集的表格变得清晰、生动使用奇妙的pgfplots
包;最后给出了完整的代码。
读取数据
第一个目标是读取数据 - 因为数据来自表格LaTeX
,所以我们可以pgfplots
用 来分隔列,&
用 来分隔行\\
。很多其他读取数据的选项,例如逗号分隔值文件 (.csv)。
\pgfplotstableread[row sep=\\,col sep=&]{
interval & carT & carD & carR \\
0--2 & 1.2 & 0.1 & 0.2 \\
2--5 & 12.8 & 3.8 & 4.9 \\
5--10 & 15.5 & 10.4 & 13.4 \\
10--20 & 14.0 & 17.3 & 22.2 \\
20--50 & 7.9 & 21.1 & 27.0 \\
50+ & 3.0 & 22.3 & 28.6 \\
}\mydata
我们现在可以pgfplots
使用 命令来访问它\mydata
。
基本情节
我们可以使用以下方法制作非常基本的条形图
\begin{tikzpicture}
\begin{axis}[
ybar,
symbolic x coords={0--2,2--5,5--10,10--20,20--50,50+},
xtick=data,
]
\addplot table[x=interval,y=carT]{\mydata};
\end{axis}
\end{tikzpicture}
这使
请注意,我们必须告诉它使用象征性的 x coords
这样它就知道使用interval
横轴上列的值。
添加更多栏目
addplot
我们可以使用更多命令轻松添加其他条形图
\begin{tikzpicture}
\begin{axis}[
ybar,
symbolic x coords={0--2,2--5,5--10,10--20,20--50,50+},
]
\addplot table[x=interval,y=carT]{\mydata};
\addplot table[x=interval,y=carD]{\mydata};
\addplot table[x=interval,y=carR]{\mydata};
\end{axis}
\end{tikzpicture}
这使
请注意,我们保留了x=interval
了已更改以y=
适合适当的列。
添加更多细节
我们可以分别使用nodes near coords
和添加更多细节,例如每个条形顶部附近的编号和图例\legend
\begin{tikzpicture}
\begin{axis}[
ybar,
symbolic x coords={0--2,2--5,5--10,10--20,20--50,50+},
xtick=data,
nodes near coords,
]
\addplot table[x=interval,y=carT]{\mydata};
\addplot table[x=interval,y=carD]{\mydata};
\addplot table[x=interval,y=carR]{\mydata};
\legend{Trips, Distance, Energy}
\end{axis}
\end{tikzpicture}
这给出
最后的调整
它有点拥挤,所以让我们指定width
、height
和查看窗口;我们还可以移动legend
并为指定标签y-axis
\begin{tikzpicture}
\begin{axis}[
ybar,
bar width=.5cm,
width=\textwidth,
height=.5\textwidth,
legend style={at={(0.5,1)},
anchor=north,legend columns=-1},
symbolic x coords={0--2,2--5,5--10,10--20,20--50,50+},
xtick=data,
nodes near coords,
nodes near coords align={vertical},
ymin=0,ymax=35,
ylabel={\%},
]
\addplot table[x=interval,y=carT]{\mydata};
\addplot table[x=interval,y=carD]{\mydata};
\addplot table[x=interval,y=carR]{\mydata};
\legend{Trips, Distance, Energy}
\end{axis}
\end{tikzpicture}
结果如下
您可以使用许多其他键来调整图表的外观和感觉 - 请浏览手册和此网站以获取更多信息。
完成 MWE
% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread[row sep=\\,col sep=&]{
interval & carT & carD & carR \\
0--2 & 1.2 & 0.1 & 0.2 \\
2--5 & 12.8 & 3.8 & 4.9 \\
5--10 & 15.5 & 10.4 & 13.4 \\
10--20 & 14.0 & 17.3 & 22.2 \\
20--50 & 7.9 & 21.1 & 27.0 \\
50+ & 3.0 & 22.3 & 28.6 \\
}\mydata
\begin{tikzpicture}
\begin{axis}[
ybar,
bar width=.5cm,
width=\textwidth,
height=.5\textwidth,
legend style={at={(0.5,1)},
anchor=north,legend columns=-1},
symbolic x coords={0--2,2--5,5--10,10--20,20--50,50+},
xtick=data,
nodes near coords,
nodes near coords align={vertical},
ymin=0,ymax=35,
ylabel={\%},
]
\addplot table[x=interval,y=carT]{\mydata};
\addplot table[x=interval,y=carD]{\mydata};
\addplot table[x=interval,y=carR]{\mydata};
\legend{Trips, Distance, Energy}
\end{axis}
\end{tikzpicture}
\end{document}
答案2
PGF 有一个很棒的网站,其中有很多示例和解释(请查看网站底部)。这里. TEXample 是一个包含结构化示例的页面。这里。PSTricks 有一个包含示例和 2D/3D 图库的页面。这里. 也http://tex.stackexchange.com你可以找到很多参考资料。使用搜索功能和关键词。