刻度缩放 - 如何将公共因子乘数更改为偏移值?

刻度缩放 - 如何将公共因子乘数更改为偏移值?

我正在使用 Python 绘制下图并获得此渲染:

在此处输入图片描述

这里,Python 自动在 y 轴上添加了一个常数值偏移量 (+9.192682e9),以便更容易读取数据。

现在,我尝试使用 tikz 获得相同的渲染。但是,当我绘制数据时,我得到了一条平坦的曲线。

在此处输入图片描述

您是否有解决方案将乘数因子(.10^9)更改为常数值偏移量(+9.192682e9),就像在 Python 中所做的那样?

这是基本的 tikz 图形:

\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots,dateplot}
\pgfplotsset{compat=1.12}

\begin{document}

\begin{tikzpicture}

\definecolor{darkblue}{RGB}{0,0,139}
\definecolor{lightgray204}{RGB}{204,204,204}

\begin{axis}[
height=7cm,
legend cell align={left},
legend style={
  fill opacity=0.8,
  draw opacity=1,
  text opacity=1,
  at={(0.03,0.97)},
  anchor=north west,
  draw=lightgray204
},
tick align=outside,
tick pos=left,
width=12cm,
x grid style={lightgray},
xlabel={Puissance laser ($\unit{\micro\watt}$)},
xlabel={b},
xmajorgrids,
xtick style={color=black},
y grid style={lightgray},
ylabel={Fréquence d'horloge ($\unit{\Hz}$)},
ylabel={a},
ymajorgrids,
ytick style={color=black},
]
\addplot [semithick, darkblue, mark=*, mark size=3, mark options={solid}, only marks]
table {%
165 9192682374.87676
149.62 9192682355.34463
123.45 9192682316.82627
91 9192682257.36819
63.08 9192682193.09079
42.1 9192682136.36608
28.39 9192682100.67402
18.61 9192682071.54598
};
\addlegendentry{$P_{W}=-7 dBm$}
\end{axis}

\end{tikzpicture}

\end{document}

答案1

我可以部分满足您的请求,但是存在一些相关的数字问题。

让我先展示一下我的解决方案(请注意,为了便于阅读,我将其精简为最相关的部分。对于 MWE,您也应该这样做。)

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[
            clip = false,
        ]
        \addplot [
            only marks,
        ] table[
                x index = 0,
                y expr=\thisrowno{1}-9192682071.00000,
            ]{%
                165     9192682374.87676
                149.62  9192682355.34463
                123.45  9192682316.82627
                91      9192682257.36819
                63.08   9192682193.09079
                42.1    9192682136.36608
                28.39   9192682100.67402
                18.61   9192682071.54598
            };

        \node [
            % draw, % if you want to see the exact placement of the node, uncomment this
            inner sep = 0pt,
            anchor = south west,
        ] at (rel axis cs:0, 1) {\small +9.192682071e9};
    \end{axis}
\end{tikzpicture}
\end{document}

编译为:

有问题的数据

我的解决方案是在 期间使用y expr=<expression>表的键\addplot,并手动减去偏移值。另外,手动将具有偏移值的节点放置在西北轴角。

问题这个输出看起来根本不像您提供的数据和屏幕截图,在于所提供的数据:pgfplots 背后的引擎无法处理这些大数字,并且似乎以某种方式默默地删除了其中的部分。

我目前不知道如何解决这个问题,但如果其他人有想法,他们可能会扩展这个部分答案。

如果您恰好控制着数据,并且不介意在 TeX 之外编辑它们,那么这将是一个快速而肮脏的解决方案,但我想您想明确保留原始数据,这是一种很好的做法。

相关内容