如何垂直移动 yticklabels?

如何垂直移动 yticklabels?

绘制数据矩阵时这里这里,刻度标签会绘制在字段的边界上。它们应该绘制在中心。我尝试使用hspace和来移动它们vspace。这对 xticklabels 有效,但对 yticklabels 无效。

可以通过设置手动完成: yticks = {0.5}yticklabels = {1},但此命令适用于不同大小的图。

这似乎应该有一个简单的解决方案,但我在手册中没有找到任何内容。

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}

\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}},
        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,
                try min ticks=3,
        height=1.5cm,
        x=0.25cm
        },
        xticklabel = {\hspace{-1.5cm}$\pgfmathprintnumber\tick$},
        yticklabel = {\vspace{-1.5cm}$\pgfmathprintnumber\tick$},
        xtickmin = 1,
        ytickmin = 1,
        xtick=data,
        ytick=data,
        point meta min=0,
        point meta max=1,
        xlabel=original feature,
        ylabel=recovered feature,
        y label style = {rotate=90},
        axis equal,
        x = 1.5cm,
        y = 1.5cm,
        z = 0cm ]
\addplot3 [surf, shader=flat corner] table {\data};
  \end{axis}
 \end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

事实上有一个简单的解决方案:可以使用 (惊喜!)xshift和 来移动刻度标签yshift。不知何故,在第一次阅读手册时我没注意到这一点。

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}

\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}},
        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,
                try min ticks=3,
        height=1.5cm,
        x=0.25cm
        },
        xticklabel style = {xshift=-0.75cm},
        yticklabel = {yshift=-0.75cm},
        xtickmin = 1,
        ytickmin = 1,
        xtick=data,
        ytick=data,
        point meta min=0,
        point meta max=1,
        xlabel=original feature,
        ylabel=recovered feature,
        y label style = {rotate=90},
        axis equal,
        x = 1.5cm,
        y = 1.5cm,
        z = 0cm ]
\addplot3 [surf, shader=flat corner] table {\data};
  \end{axis}
 \end{tikzpicture}

\end{document}

结果

相关内容