![如何像 Libreoffice calc 一样在乳胶中绘制数据?](https://linux22.com/image/350007/%E5%A6%82%E4%BD%95%E5%83%8F%20Libreoffice%20calc%20%E4%B8%80%E6%A0%B7%E5%9C%A8%E4%B9%B3%E8%83%B6%E4%B8%AD%E7%BB%98%E5%88%B6%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
我想在乳胶中绘制以下数据:
我已经使用 LinuxMint 上的 libreoffice calc 5 绘制了它,如下所示:
我想用 latex(tikzpicture) 完成同样的任务?我尝试使用此处给出的代码执行此操作:如何根据表格数据绘制图表?,
但失败了。我该怎么做,请帮忙
添加 :
这是一个简单的例子:
我将该文件命名为 data.dat:
P $Q_B$ $Q_C$ $Q_D$
A1 2 6 7
A2 3 65 87
A3 1 45 65
A4 4 54 45
A5 6 56 34
A6 8 34 23
A7 9 45 45
A8 13 23 56
A9 4.6 6 87
A10 4 56 89
使用代码:
\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{pgfplots}
\pagestyle{empty}
\begin{document}
%\pgfplotstabletypeset{data.dat}
\vspace{1cm}
\begin{tikzpicture}
\begin{axis}[
xlabel=Q Series,
ylabel=P Values]
\addplot table [y=P, x=$Q_B$]{data.dat};
\addlegendentry{$Q_B$ series}
\addplot table [y=P, x=$Q_C$]{data.dat};
\addlegendentry{$Q_C$ series}
\addplot table [y=P, x=$Q_D$]{data.dat};
\addlegendentry{$Q_D$ series}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
一些解释
- 你的第一行是字符串类型。所以你必须这么说。
- 您需要一个浮点数作为 x。因此我添加了一行。
- 默认情况下,不会显示所有 xticks。pgfplot 的默认宽度为 240pt。如果要显示所有 xticks,请使用选项
xtick=data
。
这个例子:
\RequirePackage{filecontents}
\begin{filecontents}{data.dat}
X P $Q_B$ $Q_C$ $Q_D$
1 A1 2 6 7
2 A2 3 65 87
3 A3 1 45 65
4 A4 4 54 45
5 A5 6 56 34
6 A6 8 34 23
7 A7 9 45 45
8 A8 13 23 56
9 A9 4.6 6 87
10 A10 4 56 89
\end{filecontents}
\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{pgfplots}
\pagestyle{empty}
\begin{document}
\pgfplotstabletypeset[columns/P/.style={string type}]{data.dat}
\vspace{1cm}
\begin{tikzpicture}
\begin{axis}[
xlabel=Q Series,
ylabel=P Values,
xticklabels from table={data.dat}{P},xtick=data]
\addplot[blue,thick,mark=square*] table [y=$Q_B$,x=X]{data.dat};
\addlegendentry{$Q_B$ series}
\addplot[red,thick,mark=square*] table [y=$Q_C$,x=X]{data.dat};
\addlegendentry{$Q_C$ series}
\addplot[black,dashed,thick,mark=square*] table [y=$Q_D$,x=X]{data.dat};
\addlegendentry{$Q_D$ series}
\end{axis}
\end{tikzpicture}
\end{document}