绘制数据矩阵时这里和这里,刻度标签会绘制在字段的边界上。它们应该绘制在中心。我尝试使用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}