¿Cómo puedo trazar un gráfico similar a una imagen de Matlab exclusivamente en Latex?

¿Cómo puedo trazar un gráfico similar a una imagen de Matlab exclusivamente en Latex?
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()

El siguiente código funciona en Matlab. pero me pregunto si puedo hacer lo mismo con látex, ya que los gráficos de látex son mucho más bonitos. Mi matriz de RRE tiene una dimensión de 9 por 10. A continuación se muestra mi intento, pero no funciona. Aquí hay unenlaceal archivo de datos para intentarlo. Gracias de antemano.

    \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}

Respuesta1

Debe especificar los valores xey en la tabla, por lo que el formato de su tabla debe ser x y Cen lugar de una matriz C (aquí su matriz RRE). Agregué algunas líneas a su código Matlab para transformar los datos al formato correcto para látex.

(No pude ejecutar su código Matlab porque hay variables indefinidas, pero cargar los datos vinculados me permitió omitir el ciclo por completo).

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')

Con eso, tu Código casi funciona bien. Solo agregué la opción point meta=explicitpara que el látex espere y use los datos de puntos numéricos dados.

\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}

Esto debería resultar en algo como esto. Espero que esto sea lo que estás buscando. ingrese la descripción de la imagen aquí

información relacionada