使用 PGFPlots 绘制具有负 y 值的半轴的线

使用 PGFPlots 绘制具有负 y 值的半轴的线

我正在尝试使用 PGFPlots 以对数 y 模式绘制线条。

我有一张如下所示的表格:

0.00097656 -56126
0.0019531 -53585
0.0039062 -33705
0.0078125 -25956
0.015625 -18886
0.03125 -10538
0.0625 -12273
0.125 -8532.3
0.25 -7443.9
0.5 -7443.9
1 -7407.8
2 -5200.3
4 -21963
8 -21963
16 -21963
32 -21963
64 -21963

y 值为负。当我尝试使用对数 y 轴时,它什么也没给出,因为 y 轴的范围是从 10^0 到 10^1。我该如何缩放 y 轴并获取图像?

我可以使用 matlab 来获取想要的图像,如下所示:

在此处输入图片描述

答案1

您可以通过首先取负 y 值以获得正数,然后再次取负 y 值的标签来做到这一点。

请查看代码中的注释。

% used PGFPlots v1.14
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{loglogaxis}[
            log basis x=2,
            ymin=1e3,
            ymax=1e5,
            % show the `yticklabels' as negative values
            log base 10 number format code/.code={
                $-10^{\pgfmathprintnumber{#1}}$
            },
        ]
            \addplot table [
                x index=0,
                % because negative log values are not defined,
                % make them positive
                y expr=-\thisrowno{1},
            ] {
                0.00097656 -56126
                0.0019531 -53585
                0.0039062 -33705
                0.0078125 -25956
                0.015625 -18886
                0.03125 -10538
                0.0625 -12273
                0.125 -8532.3
                0.25 -7443.9
                0.5 -7443.9
                1 -7407.8
                2 -5200.3
                4 -21963
                8 -21963
                16 -21963
                32 -21963
                64 -21963
            };
        \end{loglogaxis}
    \end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容