在不改变方向的情况下缩放 PGFPlots 中的轴

在不改变方向的情况下缩放 PGFPlots 中的轴

我正在尝试使用 pgfplots 和曲面图绘制数据矩阵。

这个问题中描述的方法对我很有效:使用 pgfplots,如何排列数据矩阵以绘制曲面图,以便矩阵中的每个单元格都绘制为正方形?

每个正方形都应该是二次的,所以我尝试使用“x = 1cm,y = 1cm”来设置大小,如下答案所述:https://tex.stackexchange.com/a/31028/29619

不幸的是,这会导致情节混乱并发出警告。

此代码编译为具有非正方形矩形的平面图:

\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}

\pgfplotstableread{
    0 0 0.77
    0 1 0

    1 0 0
    1 1 0
}\data

\begin{tikzpicture}
   \begin{axis}[
    width=5cm,
    title={\texttt{Minimal purity plot}},
    view={0}{90},
    colormap={bluenew}{rgb255(0cm)=(255,255,255); rgb255(1cm)=(40,40,240)},
    colorbar,
    colorbar style={
            at={(1.5, 0.5)},
            anchor=west,
            xticklabel pos=right,
    },
    xmin=0,
    xmax=1,
    ymin=0,
    ymax=1,
    xtick=data,
    ytick=data,
    point meta min=0,
    point meta max=1,
    xlabel=x,
    ylabel=y]
\addplot3 [surf, shader=flat corner] table {\data};
\end{axis}
\end{tikzpicture}
\end{document}

当我将“x = 1cm, y = 1cm”添加到轴设置时,会出现有关缺少设置大小的警告。如果我也添加“z = 1cm”,它看起来又像一个 3D 盒子。

它应该看起来像 MWE 中的样子,但大小不同。有办法吗?

改变轴描述中的宽度没有帮助。

编辑 感谢 percusse 的建议,单元格现在变成了正方形。我仍然希望拥有不同的图,并且各个图的单元格大小保持一致。

\pgfplotstableread{
    0 0 0.77
    0 1 0.5
0 2 0

    1 0 0
    1 1 0.3
1 2 0

2 0 0.9
2 1 0
2 2 0
}\datan

\begin{tikzpicture}
\begin{axis}[
title={\texttt{Second working plot}},
    view={0}{90},
    colormap={bluenew}{rgb255(0cm)=(255,255,255); rgb255(1cm)=(40,40,240)},
    colorbar,
    colorbar style={
            at={(1.5, 0.5)},
            anchor=west,
            xticklabel pos=right,
    },
    xmin=0,
    xmax=2,
    ymin=0,
    ymax=2,
    xtick=data,
    ytick=data,
    point meta min=0,
    point meta max=1,
    xlabel=x,
    ylabel=y,
axis equal]
\addplot3 [surf, shader=flat corner] table {\datan};
\end{axis}
\end{tikzpicture}

在第二个示例中,单元格要小得多,因为更多的单元格适合同一个图。我希望​​单元格大小保持一致,而图大小会发生变化。

答案1

您可以设置x=1cm, y=1cm, z=0cm以获取具有固定单位向量的二维图:

\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\pgfplotsset{
    colormap={bluenew}{rgb255(0cm)=(255,255,255); rgb255(1cm)=(40,40,240)},
    colorbar,
    colorbar style={
            at={(rel axis cs:1,0)},
            anchor=south west,
            xticklabel pos=right,
            try min ticks=3,
            height=1.5cm,
            x=0.25cm
    },
    xtick=data,
    ytick=data,
    point meta min=0,
    point meta max=1,
    x=1.5cm, y=1.5cm,z=0cm,
    xlabel=x,
    ylabel=y
}
\pgfplotstableread{
    0 0 0.77
    0 1 0

    1 0 0
    1 1 0
}\data

\begin{tikzpicture}
   \begin{axis}[
    title={\texttt{Minimal purity plot}}]
\addplot3 [surf, shader=flat corner] table {\data};
\end{axis}
\end{tikzpicture}

\pgfplotstableread{
    0 0 0.77
    0 1 0.5
0 2 0

    1 0 0
    1 1 0.3
1 2 0

2 0 0.9
2 1 0
2 2 0
}\datan

\begin{tikzpicture}
\begin{axis}[
title={\texttt{Second working plot}}]
\addplot3 [surf, shader=flat corner] table {\datan};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容