![错误 pgfplots 额外刻度?](https://linux22.com/image/280359/%E9%94%99%E8%AF%AF%20pgfplots%20%E9%A2%9D%E5%A4%96%E5%88%BB%E5%BA%A6%EF%BC%9F.png)
我想在图表中添加一些额外的刻度。但是,它们似乎在格式化数字方面存在问题。
\documentclass{article}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[
grid=major,
xmax=1,
xmin=1e-1,
extra x ticks={0.5},
extra x tick style={log identify minor tick positions=true}
]
\addplot {rnd};
\end{loglogaxis}
\end{tikzpicture}
\end{document}
这将得到以下结果:
额外的刻度被放置在正确的位置,但它们的标签完全错误。如果插入“0.5”而不是“5e-1”,则会产生相同的结果。
额外的:
当我省略“extra tick”代码并使用“xticks = data”时,
\pgfplotsset{tick style=log identify minor tick positions=true}
在绘图代码之前,这会产生相同的错误结果。“额外 x 刻度”很有用,因为它们打印得比主刻度小。
已编辑:代码已清理,现在仅显示错误的代码。
答案1
这看起来像是一个错误。作为一种解决方法,您可以设置
extra x tick style={
xticklabel={
\pgfmathparse{exp(\tick)}
\pgfmathprintnumber[sci, precision=1]{\pgfmathresult}
}
}
打印正确的标签:
\documentclass[11pt,titlepage,a4paper]{article}
\usepackage{tikz,pgfplots,pgfplotstable}
\usetikzlibrary{shapes,arrows,trees,positioning}
%\pgfplotsset{tick style=log identify minor tick positions=true}
% read data
\pgfplotstableset{
col sep=comma
}
\pgfplotstableread{P,Empiric,Analytic,PT
1,1,1,1
0.5,0.9998,0.999755859375,0.0625
0.2,0.7233,0.703468589015119,0.0016
0.1,0.207,0.192731013518619,0.0001
0.05,0.03,0.0258145058547874,6.25e-06
0.02,0.0016,0.0010448397034175,1.6e-07
0.01,0.0002,7.60525098816179e-05,1e-08
}\simulation
%plot
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[
grid=major,
x post scale = 1.5,
xlabel= {channel bit error probability p},
ylabel= {probability of decoding error},
every axis y label/.style={at={(ticklabel cs:0.5)},rotate=90,anchor=near ticklabel},
every axis x label/.style={at={(ticklabel cs:0.5)},anchor=near ticklabel},
xmax=1,
xmin=1e-2,
legend pos = south east,
%xtick =data,
xtick = {1e0,1e-1,1e-2},
extra x ticks={2e-2,5e-2,2e-1,5e-1},
extra x tick style={log identify minor tick positions=true,font=\footnotesize,
xticklabel={
\pgfmathparse{exp(\tick)}
\pgfmathprintnumber[sci, precision=1]{\pgfmathresult}
}}
]
\addplot table[domain=1e-2:1e0,x=P,y=Empiric] {\simulation};
\addplot table[domain=1e-2:1e0,x=P,y=Analytic] {\simulation};
\addplot [dashed] table[domain=1e-2:1e0,x=P,y=PT] {\simulation};
\legend{$empirisch$,$analytisch$,$p^{t+1}$}
\end{loglogaxis}
\end{tikzpicture}
\end{document}
答案2
pgfplots
这是:如果 x 在 [0.1,1] 中则失败的一个错误log identify minor tick positions=true
。我已经在开发版本中修复了它;将成为下一个稳定版本的一部分。