for i = 1:length(RVs)
for j=1:length(MVs)
load(data)% load some data.
sumRRE(j) = mean((RRE< 1e-10));
end
RREs(:,i) = sumRRE;
clear summRRE;
end
% in the end RREs is a matrix of 9-by-10
RV = [10:10:100]; % x-axis
MV = 0.1:0.1:0.9; % y- axis
imagesc(RV,MV,RREs);
colorbar()
以下代码在 Matlab 中有效。但我想知道我是否可以在 latex 中做同样的事情,因为 latex 图要好得多。我的 RREs 矩阵尺寸为 9×10。以下是我的尝试,但它不起作用。这是一个关联到数据文件尝试一下。提前致谢。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={Missing Value Prop},
ylabel={Rendezvous Prop},
xtick={10, 20, ..., 100},
ytick={0.1, 0.2, ..., 0.9},
y dir=reverse,
colormap={mycolormap}{color=(white) color=(blue)},
colorbar,
point meta min=0,
point meta max=1,
]
\addplot[matrix plot*, mesh/rows=9] table [x index=0, y index=1, meta index=2] {data.dat};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
您需要在表中指定 x 和 y 值,因此您的表格式应该是x y C
C 矩阵(此处为 RRE 矩阵)。我向您的 Matlab 代码添加了几行,以将数据转换为适合 latex 的正确格式。
(由于存在未定义的变量,我无法运行您的 Matlab 代码,但加载您的链接数据让我完全跳过循环。)
load("data2.dat")
RREs = data2;
% in the end RREs is a matrix of 9-by-10
RV = 10:10:100; % x-axis
MV = 0.1:0.1:0.9; % y- axis
figure(1)
colormap(flipud(gray))
imagesc(RV,MV,RREs);
colorbar()
% Transform the data into table format for Latex
[X,Y] = meshgrid(RV,MV);
data_table = [reshape(X',[],1), reshape(Y',[],1), reshape(RREs',[],1)];
writematrix(data_table,"data_trafo.dat","Delimiter",'\t')
这样,您的代码几乎可以正常工作。我只添加了选项point meta=explicit
,以便 latex 期望并使用给定的数值点数据。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={Missing Value Prop},
ylabel={Rendezvous Prop},
xtick={10, 20, ..., 100},
ytick={0.1, 0.2, ..., 0.9},
y dir=reverse,
colormap={mycolormap}{color=(white) color=(blue)},
colorbar,
point meta min=0,
point meta max=1,
]
\addplot[matrix plot*, mesh/rows=9, mesh/cols=10,point meta=explicit] table [x index=0, y index=1, meta index=2] {data_trafo.dat};
\end{axis}
\end{tikzpicture}
\end{document}