
我用 pgfplots 包畫了兩個獨立的地塊。我想要這兩個地塊具有相同的高度,但我失敗了。
這是我的論文中顯示的圖像。
正如你所看到的,右邊的比左邊的高一點。
我已經嘗試過這些事情:
使用
scaled x ticks=false
。透過這個方法就可以解決這個問題。然而,這個數字太接近了,這是我不喜歡的。我懷疑這是由指數引起的。所以我接下來嘗試了2。將指數移動到其他地方
every x tick scale label/.style={ at={(rel axis cs:0.9,-0.2)} }
然而,這個問題無法解決。他們的高度仍然不一樣。
左圖的代碼:
\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=1.16}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mathpazo}
\begin{document}
\pgfplotstableread[col sep=&, header=true]{
noise level &rmse &mean error
0 &13.8735 &5.4890
0.001 &14.8757 &5.6138
0.002 &16.6551 &5.8121
0.003 &18.1159 &6.0338
0.004 &20.0011 &6.2824
0.005 &21.9840 &6.5650
0.006 &23.8113 &6.8693
0.007 &25.8505 &7.1813
0.008 &27.4285 &7.5026
0.009 &29.4434 &7.8572
0.01 &31.1316 &8.2160
}\datatableentry
\begin{tikzpicture}
\begin{axis}[
major grid style={line width=.5pt,draw=gray!50},
title={\quad},
xtick ={0.000,0.002,...,0.010},
minor xtick ={0.001,0.003,...,0.01},
ymajorgrids,
% yminorgrids,
xtick pos=left,
ytick pos=left,
scaled x ticks=true,
ymin=0,
xmin=0,
xmax=0.01,
ymax=40,
legend style={legend pos= north west, legend cell align=left},
mark size=2,
xlabel={$p$},
ylabel={Value (m)},
tick scale binop=\times,
semithick,
height=5cm,
mark repeat={2},
every x tick scale label/.style={
at={(rel axis cs:0.9,-0.2)},overlay
},
]
% red,gray,yellow,green,lime,black,red,blude,cyan
\addlegendentry{RMSE};
\addplot [color=orange,thick,mark=o] table [y=rmse, x=noise level] {\datatableentry};
\addlegendentry{mean error};
\addplot [color=cyan,thick,mark=diamond] table [y=mean error, x=noise level] {\datatableentry};
\end{axis}
\end{tikzpicture}
\end{document}
右圖的程式碼
\documentclass{standalone}
\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=1.16}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mathpazo}
\begin{document}
\pgfplotstableread[col sep=&, header=true]{
noise level &rmse &mean error
0 &13.8735 &5.4890
0.2 &13.8491 &5.4878
0.4 &14.1604 &5.5624
0.6 &14.2584 &5.6174
0.8 &14.5146 &5.7072
1.0 &15.0029 &5.8409
1.2 &14.9655 &5.9318
1.4 &15.2164 &6.0813
1.6 &15.5703 &6.2642
1.8 &15.9604 &6.4683
2.0 &16.4144 &6.7071
2.2 &16.8802 &6.9842
2.4 &17.6332 &7.3055
2.6 &18.2558 &7.6403
2.8 &19.1625 &8.0250
3.0 &19.9934 &8.4352
}\datatableentry
\begin{tikzpicture}
\begin{axis}[
%grid style={line width=.1pt, draw=gray!20},
major grid style={line width=.5pt,draw=gray!50},
title={\quad},
% minor y tick num=4,
% xtick=data,
xtick ={0,1,...,3},
minor xtick={0.2,0.4,...,3},
ymajorgrids,
% yminorgrids,
xtick pos=left,
ytick pos=left,
scaled y ticks=true,
ymin=0,
xmin=0,
xmax=3,
ymax=25,
ytick={0,5,...,25},
legend style={legend pos= north west,legend cell align=left},
mark size=2,
xlabel={$\sigma_n$(degrees)},
ylabel={Value (m)},
tick scale binop=\times,
height=5cm,
semithick,
mark repeat={2},
scaled x ticks={base 10:0}
]
% red,gray,yellow,green,lime,black,red,blude,cyan
\addlegendentry{RMSE};
\addplot [color=orange,thick,mark=o] table [y=rmse, x=noise level] {\datatableentry};
\addlegendentry{mean error};
\addplot [color=cyan,thick,mark=diamond] table [y=mean error, x=noise level] {\datatableentry};
\end{axis}
\end{tikzpicture}
\end{document}
它們像這樣插入紙張中:
\begin{figure}[htb]
\centering
\subfloat[Performance under different levels of increment noise]{\includegraphics[height=4cm]{incremental_noise/incremental_noise}}
\hspace{.5cm}
\subfloat[Performance under different levels of deviation noise]{\includegraphics[height=4cm]{deviation_noise/deviation_noise}}
\caption{Resistence to different kind of noise.}
\label{fig:noise_resistence}
\end{figure}
您對解決這個問題有什麼想法嗎?謝謝!
答案1
我已經知道該怎麼做來解決這個問題了。我添加\raisebox{-0.25ex}[0pt][0pt]
到我的主 tex 檔案中,結果看起來不錯。看到這個答案更多細節。