使用 tikz 将矩阵绘制为热图

使用 tikz 将矩阵绘制为热图

我如何绘制这样的密度分布矩阵?

A=
    0.0333    0.0333    0.9000    0.9000
    0.9000    0.0333    0.0333    0.0333
    0.0333    0.9000    0.0333    0.0333
    0.0333    0.0333    0.0333    0.0333;

我想绘制上述矩阵(例如)pgfplotstikz双线性插值热图或灰度图像。我该怎么做?

更新 根据网络上的例子我做了这个:

\documentclass[dvipsnames]{article}
\usepackage{tikz}

\usepackage{pgfplots, filecontents}
\pgfplotsset{compat=1.13}
\usepgfplotslibrary{colorbrewer}
\usepackage{comment}
\begin{filecontents*}{temp.dat}
0 0 0.0333            
1 0 0.0333             
2 0 0.9000            
3 0 0.9000            

0 1 0.9000
1 1 0.0333
2 1 0.0333
3 1 0.0333

0 2 0.0333
1 2 0.9000
2 2 0.0333
3 2 0.0333

0 3 0.0333
1 3 0.0333
2 3 0.0333
3 3 0.0333
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
  \begin{tikzpicture}
        \begin{axis}[
            view={0}{90},   % not needed for `matrix plot*' variant
            xlabel=context,
            ylabel=outcome,
            colormap = {whiteblack}{color(0cm)  = (white);color(1cm) = (black)},
            colorbar,
            colorbar style={
                title=$ $,
                yticklabel style={
                    /pgf/number format/.cd,
                    fixed,
                    precision=1,
                    fixed zerofill,
                },
            },
            title=$\mathbf{A}_{\mathrm{dom}}$,
            %
            % added these key-values
            enlargelimits=false,
            axis on top,
            point meta min=0,
            point meta max=1,
            %
            % uncomment me to show, that there are really no cells plotted
            % when using the second variant (`surf, shader=flat corner')
            %xmax=5,
            %ymax=5,
        ]
            %% gives the mean temperature of the neighbouring cells (4x4 matrix)
            %\addplot3 [surf] file {temp.dat};

            %% gives the temperature of each point where the reference point
            %% is the lower left corner of the cell (also a 4x4 matrix)
            %% (I already asked the package author if this is intended or a bug)
            %\addplot3 [surf,shader=flat corner] file {temp.dat};

            % this should give the desired output (5x5 matrix)
            \addplot [matrix plot*,point meta=explicit] file [meta=index 2] {temp.dat};
        \end{axis}
    \end{tikzpicture}
\end{tikzpicture}

\end{document}

在此处输入图片描述

这个数字存在问题

  1. 好像它旋转了。我该如何修复它?

  2. 有没有办法在图形上放置 xticklabels 和 yticklabels 比如文本而不是数字?

  3. 我该如何删除颜色条?我尝试注释掉该行,但出现错误。

  4. 我怎样才能使用与我之前发布的类似的矩阵结构来构建此图,而不是像示例那样将其分解?谢谢。

答案1

  1. y dir = reverse您可以在环境选项中反转 y 轴的方向axis
  2. 您可以使用环境选项中的xtick/ytickxticklabels/键手动控制刻度标签。例如 yticklabelsaxis
    xtick = {0,1,2,3},
    ytick = {0,1,2,3},
    xticklabels = {
        $x_0$,
        $x_1$,
        $x_2$,
        $x_3$
    },
    yticklabels = {
        $y_0$,
        $y_1$,
        $y_2$,
        $y_3$
    },
    
  3. 颜色条由键控制colorbar。设置colorbar = false或注释掉即可colorbar

相关内容