我不想让图例像图中所示那样位于图上方。我希望它位于图框内,而不是图上方。此外,我希望 y 轴的数字格式为 0.001、0.002 等。
我的图的代码是
\begin{figure}[!htb]
\begin{center}
\begin{tikzpicture}
\begin{axis}[xmin=0.09, ymin=0, xlabel={Froude number},ylabel={Resistance coefficient}, legend style={draw=none, legend columns=0}, width=10cm, height=7cm, legend pos=north west]
\addplot+ [mark=0,smooth] table [x=Fr, y=ct, col sep=comma] {model resistnace.csv};
\addlegendentry{$C_{T}$}
\addplot+ [mark=0,smooth] table [x=Fr, y=cf, col sep=comma] {model resistnace.csv};
\addlegendentry{$C_{F}$}
\addplot+ [mark=0,smooth] table [x=Fr, y=cr, col sep=comma] {model resistnace.csv};
\addlegendentry{$C_{R}$}
\end{axis}
\end{tikzpicture}
\caption{Resistance coefficients of ship model at full load default trim condition}
\label{resiscoef}
\end{center}
\end{figure}
答案1
需要注意的是:不要在环境center
内使用环境figure
:这会增加不必要的垂直空间。只需将其\centering
放置在figure
环境内的某个位置即可更好地完成工作。
由于我没有您的数据,我制作了一些具有大致相同行为的“虚拟”函数。您可以对以后的问题做同样的事情:这会让其他人更容易/更快地帮助您。
我看到你已经找到了legend pos
解决大部分问题的关键。但对于你的图,所有的角都不是好的选择。查看手册(第 4.9.5 节),我们可以发现关键legend pos
实际上只是一组快捷方式
legend style={at={(<x>,<y>)},anchor=<name>}
所以我们可以使用
legend style={at={(1,0.5)},anchor=east},
将图例放置在其东边缘,位于轴的右侧 ( x=1
) 和中间 ( y=0.5
)。您可以调整这些值和锚点,以将图例放置在轴视口中的任何位置。
现在,关于编号:查看手册第 4.13.1 节,您将在其中找到许多常见的设置。在本例中,我们需要
scaled y ticks=false,
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=3},
它禁用 y 轴的缩放刻度并设置固定格式,小数点后显示 3 位数字。
以下是完整的代码和输出:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0.09,
ymin=0,
xlabel={Froude number},
ylabel={Resistance coefficient},
legend style={draw=none, legend columns=0},
width=10cm,
height=7cm,
legend pos=north west,
%%%% BEGIN STYLE CHANGES/ADDITIONS %%%
domain=0.092:0.208, % just for the example
legend style={at={(1,0.5)},anchor=east},
scaled y ticks=false,
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=3},
]
%%% DUMMY FUNCTIONS IN LIEU OF DATA %%%
\addplot+ [mark=0,smooth] {5e-3-1e-3*x};
\addlegendentry{$C_{T}$}
\addplot+ [mark=0,smooth] {4.5e-3-3e-3*x};
\addlegendentry{$C_{F}$}
\addplot+ [mark=0,smooth] {7e-4+1e-3*x};
\addlegendentry{$C_{R}$}
\end{axis}
\end{tikzpicture}
\end{document}