Ниже приведен 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}
Это производит этот вывод
При запуске с файлами данных, ссылка на которые приведена здесь
PlusIncreisingDeltaSurface.txt
ПлюсУменьшениеДельтаПоверхности.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}