我正在使用pgfplots
对数对数刻度绘制一些简单数据。我的代码是:
\documentclass{standalone}
\usepackage{pgfplots, amsmath}
\pgfplotsset{width=7cm,compat=newest}
\pgfkeys{/pgf/number format/set thousands separator = }
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[
xlabel = {A},
ylabel = {B},
]
\addplot[
color = red,
mark = x,
]
coordinates
{
(20,2.8559703)
(300,30.5301677)
(4000,400.3050655)
(50000,5000.1413136)
(600000,60000.0322865)
(7000000,600000.9675052)
(80000000,7000000.9377747)
};
\end{loglogaxis}
\end{tikzpicture}
\end{document}
我想在输出中更改两件事:
我不希望 y 轴标签相差 10 个数量级(这是代码默认生成的标签间距),而是希望它们相差一个数量级。我发现可以通过在extra y ticks={1e1, 1e3, 1e5},
的选项中包含该行来更改此设置begin{loglogaxis} [options]
。
但是,y 轴上对数间距的次要刻度线与 x 轴上的不同。只有主刻度线出现在10^0
、10^1
、 …处10^6
。
我如何显示这些小刻度线?我尝试查看手册;我知道我的问题的答案就在那里,但我是新手,pgfplots
而且自定义刻度线和标签的选项数量之多让我应接不暇!
答案1
来自pgfplots
手动的,第 4.14 节“Tick 选项”,第 241 页:
/pgfplots/ytickten={<exponent base 10 list>}
这些选项允许在选定的位置放置刻度 10钾;钾∈
{<exponent base 10 list>}
。它们仅用于对数图。 的语法与上面的或{<exponent base 10 list>}
相同 。xtick={<list>}
ytick={<list>}
使用
xtickten={1,2,3,4}
相当于xtick={1e1,1e2,1e3,1e4}
,但它需要更少的计算时间,并且允许使用简短的语法xtickten={1,...,4}
。
…并且它又添加了较小的“对数刻度”标记。
代码
\documentclass[tikz]{standalone}
\usepackage{pgfplots, amsmath}
\pgfplotsset{width=7cm,compat=newest}
\pgfkeys{/pgf/number format/set thousands separator = }
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[
xlabel = {A},
ylabel = {B},
ytickten = {0,...,6},
]
\addplot[
color = red,
mark = x,
]
coordinates
{
(20,2.8559703)
(300,30.5301677)
(4000,400.3050655)
(50000,5000.1413136)
(600000,60000.0322865)
(7000000,600000.9675052)
(80000000,7000000.9377747)
};
\end{loglogaxis}
\end{tikzpicture}
\end{document}