如何用颜色框替换矩阵元素

如何用颜色框替换矩阵元素

我如何用彩色方框替换矩阵元素?假设我有一个 10x10 矩阵,其中有条目 {+1,-1}。我想用黑色方框表示 +1,用红色方框表示 -1,这样就可以得到一个设计。有人能给我提供清晰的想法吗?提前谢谢。

答案1

下面我提出两种可能性。

  1. 你甚至不需要1s;有一个+-字符的数组就足够了:

    \documentclass{article}
    \usepackage{fancyvrb}
    \usepackage{xcolor}
    
    \makeatletter
    \newenvironment{MyVerb}
      {
        \def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'}
        \catcode`+=\active
        \catcode`-=\active
        \setlength\fboxsep{6pt}
        \offinterlineskip
        \VerbatimEnvironment
        \begin{Verbatim}
      }
      {\end{Verbatim}}
    \makeatother
    
    \begin{document}
    
    \begin{MyVerb}[defineactive=%
        \def+{\colorbox{black}{\phantom{a}}}
        \def-{\colorbox{red!70!black}{\phantom{a}}}]
    +-+-+-+-+-
    -+-+-+-+-+
    +-+-+-+-+-
    -+-+-+-+-+
    +-+-+-+-+-
    -+-+-+-+-+
    +-+-+-+-+-
    -+-+-+-+-+
    +-+-+-+-+-
    -+-+-+-+-+
    \end{MyVerb}
    
    \begin{MyVerb}[defineactive=%
        \def+{\colorbox{black}{\phantom{a}}}
        \def-{\colorbox{red!70!black}{\phantom{a}}}]
    +---+---+-
    --+---+---
    -+++-+++-+
    --+---+---
    +---+---+-
    ++-+++-+++
    +---+---+-
    --+---+---
    -+++-+++-+
    --+---+---
    \end{MyVerb}
    
    \begin{MyVerb}[defineactive=%
        \def+{\colorbox{black}{\phantom{a}}}
        \def-{\colorbox{red!70!black}{\phantom{a}}}]
    ++++++++++
    +---++---+
    +-+-++-+-+
    +++-++-+++
    ----++----
    ----++----
    +++-++-+++
    +-+-++-+-+
    +---++---+
    ++++++++++
    \end{MyVerb}
    
    \end{document}
    

    在此处输入图片描述

    这个答案是my answer有没有办法让 Verbatim 中的某个字符具有特定的格式?

  2. 这是使用这次的不同方法collcell包:\documentclass{article} \usepackage[table]{xcolor} \usepackage{collcell}

    \def\Side{8pt}
    
    \newcommand\ColCell[1]{%
      \ifnum#1=-1\relax
        \gdef\mycolor{red!70!black}
      \else
      \ifnum#1=1\relax
        \gdef\mycolor{black}
      \fi\fi 
      \expandafter\expandafter\cellcolor{\mycolor}%
        \parbox[c][\dimexpr\Side+2\tabcolsep\relax][c]{\Side}{}%
    }
    
    \newcolumntype{E}{>{\centering\arraybackslash\collectcell\ColCell}p{\Side}<{\endcollectcell}}
    
    \begin{document}
    
    \noindent\begin{tabular}{*{10}{E}}
    +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 \\
    -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 \\
    +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 \\
    -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 \\
    +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 \\
    -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 \\
    +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 \\
    -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 \\
    +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 \\
    -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 & -1 & +1 \\
    \end{tabular}\qquad        
    \noindent\begin{tabular}{*{10}{E}}
    +1 & -1 & -1 & -1 & +1 & -1 & -1 & -1 & +1 & -1 \\
    -1 & -1 & +1 & -1 & -1 & -1 & +1 & -1 & -1 & -1 \\
    -1 & +1 & +1 & +1 & -1 & +1 & +1 & +1 & -1 & +1 \\
    -1 & -1 & +1 & -1 & -1 & -1 & +1 & -1 & -1 & -1 \\
    +1 & -1 & -1 & -1 & +1 & -1 & -1 & -1 & +1 & -1 \\
    +1 & +1 & -1 & +1 & +1 & +1 & -1 & +1 & +1 & +1 \\
    +1 & -1 & -1 & -1 & +1 & -1 & -1 & -1 & +1 & -1 \\
    -1 & -1 & +1 & -1 & -1 & -1 & +1 & -1 & -1 & -1 \\
    -1 & +1 & +1 & +1 & -1 & +1 & +1 & +1 & -1 & +1 \\
    -1 & -1 & +1 & -1 & -1 & -1 & +1 & -1 & -1 & -1 \\
    \end{tabular}\bigskip
    
    \noindent\begin{tabular}{*{10}{E}}
    +1 & +1 & +1 & +1 & +1 & +1 & +1 & +1 & +1 & +1 \\
    +1 & -1 & -1 & -1 & +1 & +1 & -1 & -1 & -1 & +1 \\
    +1 & -1 & +1 & -1 & +1 & +1 & -1 & +1 & -1 & +1 \\
    +1 & +1 & +1 & -1 & +1 & +1 & -1 & +1 & +1 & +1 \\
    -1 & -1 & -1 & -1 & +1 & +1 & -1 & -1 & -1 & -1 \\
    -1 & -1 & -1 & -1 & +1 & +1 & -1 & -1 & -1 & -1 \\
    +1 & +1 & +1 & -1 & +1 & +1 & -1 & +1 & +1 & +1 \\
    +1 & -1 & +1 & -1 & +1 & +1 & -1 & +1 & -1 & +1 \\
    +1 & -1 & -1 & -1 & +1 & +1 & -1 & -1 & -1 & +1 \\
    +1 & +1 & +1 & +1 & +1 & +1 & +1 & +1 & +1 & +1 \\
    \end{tabular}
    
    \end{document}
    

    在此处输入图片描述

相关内容