아래는 MWE입니다.
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usetikzlibrary{pgfplots.groupplots}
\pgfplotsset{compat = 1.12}
\begin{document}
\centering
\begin{figure}
\centering
\begin{tikzpicture}{fig6}
\begin{groupplot}[
height=6cm,
width=6cm,
group style={group size=2 by 2,
group name = fig6_plots,
xlabels at=edge bottom,
ylabels at=edge left
},
xlabel = {\footnotesize $\rho$},
ylabel = {\footnotesize $\gamma$},
colorbar horizontal,
colorbar to name=Fig6Colorbar,
colormap/blackwhite,
y tick label style={
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=2,
/tikz/.cd
},
x tick label style={
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=0,
/tikz/.cd
}]
\nextgroupplot[title={\scriptsize Increasing $\alpha$}, z buffer=sort]
\addplot3[surf, shader=interp,colormap/blackwhite] file {PlusIncreasingSurface.txt};
\nextgroupplot[title={\scriptsize Decreasing $\alpha$}, z buffer=sort]
\addplot3[surf, shader=interp,colormap/blackwhite] file {PlusDecreasingSurface.txt};
\nextgroupplot[title={\scriptsize Delta from Come and Go},view={0}{90}]
\addplot3[surf, shader=interp,point meta min=-10,point meta max=0] file {PlusIncreasingDeltaSurface.txt};
\nextgroupplot[title={\scriptsize Delta from Come and Go},view={0}{90}]
\addplot3[surf, shader=interp,point meta min=-10,point meta max=0] file {PlusDecreasingDeltaSurface.txt};
\end{groupplot}
\node (fig6_Legend) at ($(fig6_plots c1r2.center)!0.5!(fig6_plots c2r2.center)-(0,4.5cm)$){\ref{Fig6Colorbar}};
\end{tikzpicture}
\caption{+Resources Reactive with $\alpha$ Starting at Upper Bound}
\label{ReactiveDecreasing}
\end{figure}
\end{document}
그러면 다음과 같은 출력이 생성됩니다.
여기에 링크된 데이터 파일로 실행하면
PlusIncreasingDeltaSurface.txt
PlusDecreasingDeltaSurface.txt
지금까지는 괜찮았지만 규모의 큰 차이를 고려하여 결합된 컬러바를 버리고 각 하단 차트에 자체 규모를 갖도록 하기로 결정했습니다. 그래서 결합된 컬러바를 생성하는 노드와 메타 포인트에 대한 부분을 주석 처리했습니다.
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usetikzlibrary{pgfplots.groupplots}
\pgfplotsset{compat = 1.12}
\begin{document}
\centering
\begin{figure}
\centering
\begin{tikzpicture}{fig6}
\begin{groupplot}[
height=6cm,
width=6cm,
group style={group size=2 by 2,
group name = fig6_plots,
xlabels at=edge bottom,
ylabels at=edge left
},
xlabel = {\footnotesize $\rho$},
ylabel = {\footnotesize $\gamma$},
colorbar horizontal,
%colorbar to name=Fig6Colorbar,
colormap/blackwhite,
y tick label style={
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=2,
/tikz/.cd
},
x tick label style={
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=0,
/tikz/.cd
}]
\nextgroupplot[title={\scriptsize Increasing $\alpha$}, z buffer=sort]
\addplot3[surf, shader=interp,colormap/blackwhite] file {PlusIncreasingSurface.txt};
\nextgroupplot[title={\scriptsize Decreasing $\alpha$}, z buffer=sort]
\addplot3[surf, shader=interp,colormap/blackwhite] file {PlusDecreasingSurface.txt};
\nextgroupplot[title={\scriptsize Delta from Come and Go},view={0}{90}]
%\addplot3[surf, shader=interp,point meta min=-10,point meta max=0] file {PlusIncreasingDeltaSurface.txt};
\addplot3[surf, shader=interp] file {PlusIncreasingDeltaSurface.txt};
\nextgroupplot[title={\scriptsize Delta from Come and Go},view={0}{90}]
%\addplot3[surf, shader=interp,point meta min=-10,point meta max=0] file {PlusDecreasingDeltaSurface.txt};
\addplot3[surf, shader=interp] file {PlusDecreasingDeltaSurface.txt};
\end{groupplot}
%\node (fig6_Legend) at ($(fig6_plots c1r2.center)!0.5!(fig6_plots c2r2.center)-(0,4.5cm)$){\ref{Fig6Colorbar}};
\end{tikzpicture}
\caption{+Resources Reactive with $\alpha$ Starting at Upper Bound}
\label{ReactiveDecreasing}
\end{figure}
\end{document}
동일한 데이터에서 이것을 실행하면 이제 다음과 같은 결과를 얻습니다.
두 등고선 플롯의 상단에 있는 "슬라이스"는 무엇입니까? 각 플롯의 상단에 레이블이 지정되지 않은 색상 막대가 있는 것처럼 보입니까?
보너스 질문 - 컬러바 눈금의 정밀도를 어떻게 변경합니까?
답변1
두 개의 등고선 플롯 상단에 표시되는 "슬라이스"는 실제로 두 개의 최상위 플롯에 대한 컬러바입니다. 이는 colorbar horizontal
전체 그룹에 추가한 대로 포함됩니다 . 각 axis
환경은 이러한 옵션을 상속합니다.모든이 그룹의 플롯에는 자체 컬러바가 있습니다. 이를 명확하게 보려면 플롯 사이의 수직 간격을 늘릴 수 있습니다.
colorbar horizontal
이를 방지하려면 실제로 원하는 축으로 옵션을 이동해야 합니다 . 두 등고선 플롯의 컬러바가 동일한 눈금 형식을 가지도록 하려면 에서 새 스타일을 만들고 pgfplots
이를 해당 축에 적용하기만 하면 됩니다. 당신이 쓴다면
\pgfplotsset{%
mycolorbar/.style={%
colorbar horizontal,
every colorbar/.append style={%
x tick label style={%
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=2,
/tikz/.cd}}}
}
~ 전에환경 에 따라 컬러바를 원하는 축에 tikzpicture
옵션을 추가하기만 하면 됩니다 . mycolorbar
두 컬러바에 대해 서로 다른 형식을 원하는 경우 각 옵션에서 이를 정의해야 합니다 \nextgroupplot[...]
.
따라서 다음 코드는 아래 출력을 제공합니다.
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usetikzlibrary{pgfplots.groupplots}
\pgfplotsset{compat = 1.12}
\begin{document}
\pgfplotsset{%
mycolorbar/.style={%
colorbar horizontal,
every colorbar/.append style={%
x tick label style={%
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=2,
/tikz/.cd}}}
}
\begin{figure}
\centering
\begin{tikzpicture}{fig6}
\begin{groupplot}[
height=6cm,
width=6cm,
group style={%
group size=2 by 2,
group name=fig6_plots,
xlabels at=edge bottom,
ylabels at=edge left
},
xlabel = {\footnotesize $\rho$},
ylabel = {\footnotesize $\gamma$},
%colorbar to name=Fig6Colorbar,
colormap/blackwhite,
y tick label style={%
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=2,
/tikz/.cd
},
x tick label style={
/pgf/number format/.cd,
fixed,
fixed zerofill,
precision=0,
/tikz/.cd
}
]
\nextgroupplot[title={\scriptsize Increasing $\alpha$}, z buffer=sort]
\addplot3[surf, shader=interp,colormap/blackwhite] file {PlusIncreasingSurface.txt};
\nextgroupplot[title={\scriptsize Decreasing $\alpha$}, z buffer=sort]
\addplot3[surf, shader=interp,colormap/blackwhite] file {PlusDecreasingSurface.txt};
\nextgroupplot[mycolorbar, title={\scriptsize Delta from Come and Go},view={0}{90}]
\addplot3[surf, shader=interp] file {PlusIncreasingDeltaSurface.txt};
\nextgroupplot[mycolorbar, title={\scriptsize Delta from Come and Go},view={0}{90}]
\addplot3[surf, shader=interp] file {PlusDecreasingDeltaSurface.txt};
\end{groupplot}
\end{tikzpicture}
\caption{+Resources Reactive with $\alpha$ Starting at Upper Bound}
\label{ReactiveDecreasing}
\end{figure}
\end{document}