我有以下代码
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}
\begin{filecontents}{testdata.dat}
6.3e-05 0.8767984145412976 0.6
0.000125 12.85965577546382 9.970000000000001
0.00025 16.95140970189756 13.76
0.0005 14.61328253838453 12.13
0.001 21.24630316052836 17.76
0.002 33.45255040918443 27.81
0.004 0 17.97
0.0056 0 0
0.008 0 0
0.0112 0 0
0.016 0 0
0.0224 0 0
0.0315 0 0
\end{filecontents}
\usetikzlibrary{calc}
\usetikzlibrary{pgfplots.groupplots}
\pgfplotstableread{testdata.dat}\datatable
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=0pt,
/pgf/bar width=5pt,
bar cycle list,
width=6cm,
height=2cm,
scale only axis,
xmajorgrids,
ymin=0, ymax=100,
ymajorgrids,
tick label style={font=\scriptsize},
x tick label style={/pgf/number format/sci},
xticklabels from table={\datatable}{0}
]
\addplot table[x expr=\coordindex,y=1]{\datatable};
\addplot table[x expr=\coordindex,y=2]{\datatable};
\end{axis}
\end{tikzpicture}
\end{document}
这给了我这个情节
现在,我想要科学格式,而不是 xticklabels 的固定格式,并且希望每个传递的坐标上都有一个 xtick。我该如何实现?我试过了,x tick label style={/pgf/number format/sci}
但没有用。
更新:
为了拥有每个 xtick,我必须使用选项xtick=data
。
答案1
1xtick=data
表示来自数据的 x 轴。
2 但xticklabels from table
意味着来自数据的 x 轴格式。
也就是说,如果您希望从 读取图例\datatable
,请使用第一种方法。
来自的示例PGFplots 官方网站显示了两种方法的不同。示例 323(或手册版本 1.8 第 302 页)
xmin=-4.7124, xmax=4.7124,
xtick={-4.7124,-1.5708,...,10},
xticklabels={$-\frac{3}{2} \pi$,$-\pi/2$,$\pi/2$,$\frac{3}{2} \pi$},
注意,xtick
指的是值,而xticklabels
指的是格式。
所以如果我将你的代码改为 ,xticklabels from table={\datatable}{0}
就xtick=data
完成了。但这样会很丑陋。