pgfplots x 轴缩放到非常小的尺寸

pgfplots x 轴缩放到非常小的尺寸

我这里遇到了一个问题。当我使用如下所示的代码时,一切都运行正常。但如果我将 xmax 参数更改为较小的值(例如 xmax=0.05),就会出现一些错误。

! 软件包 pgfkeys 错误:我不知道您传递了“(1,0)”的键“/pgf/number format/at”,我将忽略它。也许您拼错了。请参阅 pgfkeys 软件包文档以获取解释。输入 H 可立即获得帮助……\end{axis}

! 软件包 pgfkeys 错误:我不知道您传递了“-2em”的键“/pgf/number format/yshift”,我将忽略它。也许您拼错了。请参阅 pgfkeys 软件包文档以获取解释。输入 H 可立即获得帮助……\end{axis}

! 软件包 pgfkeys 错误:我不知道键 '/pgf/number format/left',我将忽略它。也许您拼错了。请参阅 pgfkeys 软件包文档以获取解释。输入 H 可立即获得帮助.... \end{axis}

! 软件包 pgfkeys 错误:我不知道您传递了“0pt”的键“/pgf/number format/inner sep”,我将忽略它。也许您拼写错误。请参阅 pgfkeys 软件包文档以获取解释。输入 H 可立即获得帮助……\end{axis}

    \documentclass[12pt,a4paper]{report}
    \usepackage[utf8]{inputenc}
    \usepackage[german]{babel}
    \usepackage[T1]{fontenc}
    \usepackage{amsmath}
    \usepackage{amsfonts}
    \usepackage{amssymb}
    \usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
    \usepackage{pgfplots}
    \begin{document}

    \begin{figure}
    \centering
    \begin{tikzpicture}
    \pgfplotsset{every axis/.append style={
    font=\footnotesize,
    %line width=1pt,
    %tick style={line width=0.8pt}
    }}
    \pgfplotsset{every axis legend/.append style={at={(0.5,1.03)},anchor=south}}
    \begin{axis}[ticklabel style={
        /pgf/number format/.cd,
  use comma},xlabel={$\sigma$ [-]},ylabel={$\Lambda$ [-]}, grid=major, legend columns=-1, xmin= 0, xmax= 0.1, cycle list name=black white, width= 0.5\textwidth]
    \addplot table {test.dat};
    \legend {Theorie}
    \end{axis}
    \end{tikzpicture}
    \caption[]{}
    \end{figure}

    \end{document}

数据文件 test.dat 如下所示:

    x   y
    0.0000734405    1.00
    0.000734224 1.00002
    0.00220151  1.00003
    0.003667276 1.00007
    0.005863111 1.00017
    0.00732515  1.00026
    0.0109739   1.00060
    0.014613779 1.00106
    0.021868115 1.00236
    0.02908885  1.00416

如果有人知道如何将图表缩放到合适的尺寸,那将对我有很大帮助。任何帮助都将不胜感激!谢谢!

答案1

第一个问题出现是因为您将目录 ( .cd) 更改为number format,但随后又没有将其切换回 ,tikz这会导致上述错误。正如您很容易同意的那样,atyshiftleftinner sep不属于number format,但却是tikz密钥。

第二个问题可以利用该特征解决scaled ticks

请查看以下代码和包含的注释以了解更多详细信息。(为简单起见,我直接将数据文件包含test.dat在文档本身中。)

\documentclass[border=2mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \pgfplotsset{
            every axis/.append style={
                font=\footnotesize,
                line width=1pt,
                tick style={line width=0.8pt}
            },
            every axis legend/.append style={
                at={(0.5,1.03)},
                anchor=south,
            },
        }
        \begin{axis}[
            % don't scale `xticks'
            scaled x ticks=false,
            % scale `yticks' by subtracting 1 from the value
            % add "+1" as scale label
            % (the `%' signs are needed to avoid plotting unnecessary white space)
            scaled y ticks=manual:{$+1$}{%
                \pgfmathparse{#1-1}%
            },
            ticklabel style={
                % change "directory" to the number format
                /pgf/number format/.cd,
                    use comma,
                    fixed,
                % change "directory" back to tikz
                /tikz/.cd,
            },
            xticklabel style={
                /pgf/number format/precision=2,
            },
            yticklabel style={
                /pgf/number format/precision=3,
            },
            xlabel={$\sigma$ [--]},
            ylabel={$\Lambda$ [--]},
            grid=major,
            legend columns=-1,
            xmin=0,
            xmax=0.05,
            cycle list name=black white,
            width=0.5\textwidth,
        ]
%            \addplot table {test.dat};
            \addplot table {
                x   y
                0.0000734405    1.00
                0.000734224 1.00002
                0.00220151  1.00003
                0.003667276 1.00007
                0.005863111 1.00017
                0.00732515  1.00026
                0.0109739   1.00060
                0.014613779 1.00106
                0.021868115 1.00236
                0.02908885  1.00416
            };
            \legend {Theorie}
        \end{axis}
    \end{tikzpicture}
\end{document}

image showing the result of above code

相关内容