选择矩阵中的列和行

选择矩阵中的列和行

我正在尝试画出图片上的内容:

在此处输入图片描述

我怎样才能绘制椭圆?

母语:

\documentclass{article}
\usepackage{mathtools}
\usepackage{blkarray, bigstrut}

\begin{document}
\begin{table}
    \begin{tabular}{ccc}
          &  & V1  & V2 & V3  \\ \hline
        U1& 6 &    2 &   2    \\ \hline
        U2& 8 &     3&    5  \\ \hline
        U3& 4 &    2 &    6 \\
        \hline
    \end{tabular}
\end{table}

= 

\begin{table}[]
\begin{tabular}{ccc}
 & Comedy & Tragedy  \\
2 &  &  \\ \hline
3 &  &  \\ \hline
2 &  & \hline
\end{tabular}
\end{table}

\times

\begin{table}
\begin{tabular}{cccc}
 & V1 &V2  &V3  \\ \hline
 Comedy & 3 & 1 &1  \\ \hline
 Tragedy & 1 & 0 &-2 \hline
\end{tabular}
\end{table}
\end{document}

答案1

使用该nicematrix包,设计为未编号的方程式:

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}
\usepackage{nicematrix,tikz}
\usetikzlibrary{fit,shapes.geometric}
\tikzset{highlight/.style={ellipse, draw=red, semithick, inner sep=1pt}}

\begin{document}
\[
\begin{NiceMatrix}[hvlines]
    & V1    & V2    & V3    \\ 
U1  & 6     & 2     & 2     \\ 
U2  & 8     & 3     & 5     \\ 
U3  & 4     & 2     & 6     \\ 
    \end{NiceMatrix}
\quad=\quad
\begin{NiceMatrix}[hvlines]
    & \text{Comedy}
            & \text{Tragedy}\\  
U1  & 6     & 2             \\  
U2  & 8     & -1            \\  
U3  & 4     & -2            \\  
\CodeAfter
\tikz \node [highlight, fit=(4-1) (4-3),
             label=below:User Features Vector] {} ;
\end{NiceMatrix}
\quad\times\quad
\begin{NiceMatrix}[hvlines]
    & V1    & V2    & V3    \\  
\text{Comedy}
    & 3     & 1     & 1     \\  
\text{Tragedy}
    & 1     & 0     & -2    \\  
\CodeAfter
\tikz \node [highlight, fit=(1-2) (3-2),
             label=below:Item Features Vector] {};
\end{NiceMatrix}
\]
\end{document}

注意:为了显示结果,您需要至少编译 MWE 两次!

附录:*

  • 从您的评论可以看出,您喜欢使用文档standalone类在文档中使用此类解决方案。不幸的是,此文档类无法很好地支持基于remember pictureoverlay选项的图像或书写方程式(据我所知)。
  • 另一方面,不清楚预期有一个方程式(与tikz图纸结合,形式为nicematrix或例如与tikzmark节点结合)会带来什么好处。将其作为pdfpng可以简单缩放的文件包含?
  • 理由是,你可以将其包含在其他环境中,例如在 float 中,这并不令人信服。这可以直接完成。例如在figurefloat 中:
\documentclass{article}
\usepackage{geometry}
\usepackage{mathtools}
\usepackage{nicematrix,tikz}
\usetikzlibrary{fit,shapes.geometric}
\tikzset{highlight/.style={ellipse, draw=red, semithick, inner sep=1pt}}

\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{figure}[htb]
    \[
\begin{NiceMatrix}[hvlines]
    & V1    & V2    & V3    \\ 
U1  & 6     & 2     & 2     \\ 
U2  & 8     & 3     & 5     \\ 
U3  & 4     & 2     & 6     \\ 
    \end{NiceMatrix}
\quad=\quad
\begin{NiceMatrix}[hvlines]
    & \text{Comedy}
            & \text{Tragedy}\\  
U1  & 6     & 2             \\  
U2  & 8     & -1            \\  
U3  & 4     & -2            \\  
\CodeAfter
\tikz \node [highlight, fit=(4-1) (4-3),
             label=below:User Features Vector] {} ;
\end{NiceMatrix}
\quad\times\quad
\begin{NiceMatrix}[hvlines]
    & V1    & V2    & V3    \\  
\text{Comedy}
    & 3     & 1     & 1     \\  
\text{Tragedy}
    & 1     & 0     & -2    \\  
\CodeAfter
\tikz \node [highlight, fit=(1-2) (3-2),
             label=below:Item Features Vector] {} ;
\end{NiceMatrix}
\]
\caption{For some reason this equation is present as figure}
\label{fig:nicematrix}
\end{figure}
\lipsum[2]
\end{document}

这使:

在此处输入图片描述

  • 如果等式太大(现在,它比article文档类定义的默认文本宽度更宽),您可以使用较小的字体或包\medmath中定义的宏nccmath
\documentclass{article}
\usepackage{geometry}
\usepackage{mathtools, nccmath}
\usepackage{nicematrix,tikz}
\usetikzlibrary{fit,
                shapes.geometric}
\tikzset{highlight/.style={ellipse, draw=red, semithick, inner sep=1pt}}

\usepackage{lipsum}
\begin{document}
\lipsum[1]
    \begin{equation}\medmath{
\begin{NiceMatrix}[hvlines]
    & V1    & V2    & V3    \\ 
U1  & 6     & 2     & 2     \\ 
U2  & 8     & 3     & 5     \\ 
U3  & 4     & 2     & 6     \\ 
    \end{NiceMatrix}
\quad=\quad
\begin{NiceMatrix}[hvlines]
    & \text{Comedy}
            & \text{Tragedy}\\  
U1  & 6     & 2             \\  
U2  & 8     & -1            \\  
U3  & 4     & -2            \\  
\CodeAfter
\tikz \node [highlight, fit=(4-1) (4-3),
             label=below:User Features Vector] {} ;
\end{NiceMatrix}
\quad\times\quad
\begin{NiceMatrix}[hvlines]
    & V1    & V2    & V3    \\  
\text{Comedy}
    & 3     & 1     & 1     \\  
\text{Tragedy}
    & 1     & 0     & -2    \\  
\CodeAfter
\tikz \node [highlight, fit=(1-2) (3-2),
             label=below:Item Features Vector] {} ;
\end{NiceMatrix}
    }
\medskip
    \end{equation}
\lipsum[2]
\end{document}

在此处输入图片描述

  • 如果你出于某种原因想要在文档中多次重新输入此方程式,则可以将方程式代码存储在文件中,然后简单地调用它,例如

       \input{equations/nicematrix-1}
    

    其中,是存储在文档文件夹子文件夹nicematrix-1中的包含方程代码的文件的名称。equations

  • 如果仍有理由将此方程式作为文档,那么解决方案可能是使用库standalone直接绘制它。此类图像的代码可能“略微”复杂一些(参见我的第二个答案)。tikzmatrix

答案2

您的方程式如图所示tikz。使用的是standalone您在评论中请求的文档类:

\documentclass[tikz, margin=1pt]{standalone}
\usetikzlibrary{fit,
                matrix,
                positioning,
                shapes.geometric}
\tikzset{
highlight/.style args={#1/#2}{ellipse, draw=red, semithick, 
                              inner xsep=#1, inner ysep=#2},
 mymatrix/.style={matrix of nodes,
                  nodes in empty cells,
                  nodes={minimum height=3ex, minimum width=2em, 
                         inner sep=2pt, outer sep=0pt, anchor=center,
                         draw},
                  column sep=-\pgflinewidth,
                  row sep=-\pgflinewidth
                  }
        }

\begin{document}
    \begin{tikzpicture}[node distance=0pt]
\matrix (m1) [mymatrix] 
{
    & V1    & V2    & V3    \\
U1  & 6     & 2     & 2     \\
U2  & 8     & 3     & 5     \\
U3  & 4     & 2     & 6     \\
};
\node (times) [right=of m1] {$\times$};
\matrix (m2) [mymatrix, 
              column 2/.style={nodes={minimum width=4em}},
              column 3/.style={nodes={minimum width=4em}},
              right=of times]
{
    & Comedy    & Tragedy   \\
U1  & 6         & 2         \\
U2  & 8         & $-1$      \\
U3  & 4         & $-2$      \\
};
\node (equal) [right=of m2] {$=$};
\matrix (m3) [mymatrix,
              column 1/.style={nodes={minimum width=4em}},
              right=of equal]
{
        & V1    & V2    & V3    \\  
Comedy  & 3     & 1     & 1     \\  
Tragedy & 1     & 0     & $-2$  \\  
};
\node[highlight=-9pt/0pt, fit=(m2-4-1) (m2-4-3),
      label=below:User Features Vector] {};  
\node[highlight=0pt/-3pt, fit=(m3-1-2) (m3-3-2),
      label=below:Item Features Vector] {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

nodes in empty cells,或者如果你删除样式定义中的行mymatrix

在此处输入图片描述

相关内容