我的文档中确实有很多对数对数轴图。y 值通常经过 1,即从 0.5 到 2。因此,y 刻度标签的形式为 。
减号为 y 标签的间距增加了很多额外的空间。我想坚持使用 y 刻度标签的 10 进制表示法。在这种情况下,我不想使用
log ticks with fixed point
我已经发现,如何缩小减号。我怎样才能具体更改 pgfplots 中刻度标签指数的所有减号?
梅威瑟:
\documentclass{minimal}
\usepackage{pgfplots}
\begin{document}
\( \sqrt{\scalebox{0.5}[1.0]{\( - \)}\frac{1}{9}} \)
% cf.
\( \sqrt{-\frac{1}{9}} \)
\begin{tikzpicture}
\begin{loglogaxis}[
xlabel={xlabel is nicely separated},
ylabel={ylabel is displaced to far}
]
\addplot
table{
x y
0.1 0.1
1.0 1.0
10.0 10.0
};
\end{loglogaxis}
\end{tikzpicture}
\end{document}
非常感谢您的帮助。谢谢。
答案1
抱歉这么晚才回复,但最近我也要做同样的事情,并且看到了这篇文章,所以我想分享一下我所做的事情,以防其他人需要它。
我认为还有一种更自动化的方法,但由于我是 pgfplots 的新手,因此它遵循完全手动的方式明确定义刻度位置和刻度标签。如果您有许多这样的图,这可能不是您想要做的事情。
结果如下:
和ytick
是yticklabels
使用先前定义的命令明确定义的,\unaryminus
以方便使用。虽然是可选的,但我发现让 latex 计算最长标签的宽度,\settowidth
然后将其设置为text width
中的yticklabel style
,以及将对齐方式设置为右对齐会很方便。
\documentclass{article}
% replaced minimal class with article, which is more appropriate for MWEs
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\newcommand\unaryminus{\smash{\scalebox{0.5}[1.0]{\( - \)}}}
% \smash is used here to reduce the depth of the minus sign in the superscript, so the xlabels have the same height
\begin{document}
\newlength{\mylabelwidth}
\settowidth{\mylabelwidth}{$10^{\unaryminus 1}$}
\begin{tikzpicture}
\begin{loglogaxis}[
xlabel={xlabel is nicely separated},
ylabel={ylabel is also nicely aligned},
ytick={0.1, 1,10, 100},
yticklabels={$10^{\unaryminus 1}$,$10^{0}$,$10^{1}$,$10^{2}$},
yticklabel style={
text width=\mylabelwidth,
align=right, % alternatively use "left"
},
xtick={0.1, 1,10, 100},
xticklabels={$10^{\unaryminus 1}$,$10^{0}$,$10^{1}$,$10^{2}$},
]
\addplot
table{
x y
0.1 0.1
1.0 1.0
10.0 10.0
100.0 100.0
};
\end{loglogaxis}
\end{tikzpicture}
\end{document}
PS:compat=newest
添加了 以阻止 pgfplots 发出警告。没有它也可以正常工作。此外,如果有人知道如何自动生成标签和刻度,我会非常感兴趣!
答案2
你可以将其移近ylabel
轴,这不是更好的方法吗?使用compat=1.3
或更高,你可以添加ylabel shift=-5pt
以将其移近5pt
轴。
无关注释:为什么要避免使用最小类?
\documentclass{article}
\usepackage{pgfplots}
% compat setting of 1.3 or higher required for ylabel shift to work
\pgfplotsset{compat=1.3}
\begin{document}
\begin{tikzpicture}
\begin{loglogaxis}[
xlabel={xlabel is nicely separated},
ylabel={ylabel is displaced to far},
ylabel shift=-5pt
]
\addplot
table{
x y
0.1 0.1
1.0 1.0
10.0 10.0
};
\end{loglogaxis}
\end{tikzpicture}
\end{document}