我如何純粹在 Latex 中繪製類似 Matlab imagesc 的圖

我如何純粹在 Latex 中繪製類似 Matlab imagesc 的圖
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 矩陣的尺寸是 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 程式碼中添加了一些行,以將資料轉換為正確的乳膠格式。

(我無法運行您的 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}

這應該會導致類似這樣的結果。我希望這就是您正在尋找的。 在此輸入影像描述

相關內容