我这里遇到了一个问题。当我使用如下所示的代码时,一切都运行正常。但如果我将 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
这会导致上述错误。正如您很容易同意的那样,at
、yshift
、left
和inner 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}