PGFplots:loglogaxis:缩小指数的减号

PGFplots:loglogaxis:缩小指数的减号

我的文档中确实有很多对数对数轴图。y 值通常经过 1,即从 0.5 到 2。因此,y 刻度标签的形式为 10^1

在此处输入图片描述

减号为 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 的新手,因此它遵循完全手动的方式明确定义刻度位置和刻度标签。如果您有许多这样的图,这可能不是您想要做的事情。

结果如下:

缩短减法仍正确对齐

ytickyticklabels使用先前定义的命令明确定义的,\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}

相关内容