Matlab 이미지와 유사한 플롯을 순수하게 Latex로 플롯하려면 어떻게 해야 합니까?

Matlab 이미지와 유사한 플롯을 순수하게 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()

다음 코드는 Matlab에서 작동합니다. 하지만 라텍스 플롯이 훨씬 더 좋기 때문에 라텍스에서도 동일한 작업을 수행할 수 있는지 궁금합니다. 내 RRE 행렬은 9x10 차원입니다. 아래는 나의 시도이지만 작동하지 않습니다. 여기에는링크데이터 파일에 시도해 보세요. 미리 감사드립니다.

    \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 CC 행렬(여기서는 RRE 행렬) 대신에 사용되어야 합니다. 데이터를 라텍스의 올바른 형식으로 변환하기 위해 Matlab 코드에 몇 줄을 추가했습니다.

(정의되지 않은 변수가 있기 때문에 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라텍스가 주어진 수치 포인트 데이터를 예상하고 사용하도록 옵션만 추가했습니다 .

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

결과는 다음과 같습니다. 이것이 당신이 찾고 있는 것이기를 바랍니다. 여기에 이미지 설명을 입력하세요

관련 정보