如何将矩阵表转换为独立文档

如何将矩阵表转换为独立文档

我想生成.pdf以下 tikzpicture 的独立图形。我尝试了独立 tikzpictures 的常见示例,但没有效果。

\documentclass{article}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{filecontents}
\usepackage[table]{xcolor}
\usepackage{pgfplotstable}
\usetikzlibrary{calc}
% \pgfplotsset{compat=1.16}

% next line is to put the framebox
% \usepackage[margin=1in,showframe]{geometry}

\begin{filecontents}{matrix.cvs}
0 1 1 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 1 0 1 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 1 1
0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0
0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0
0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0
1 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0
0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1
\end{filecontents}

\makeatletter
\tikzset{
    zero color/.initial=white,
    zero color/.get=\zerocol,
    zero color/.store in=\zerocol,
    one color/.initial=red,
    one color/.get=\onecol,
    one color/.store in=\onecol,
    cell wd/.initial=1ex,
    cell wd/.get=\cellwd,
    cell wd/.store in=\cellwd,
    cell ht/.initial=1ex,
    cell ht/.get=\cellht,
    cell ht/.store in=\cellht,
    xlabels/.store in=\myxlabels,
    ylabels/.store in=\myylabels,
}
\newcommand{\drawgrid}[2][]{
\medskip
\begin{tikzpicture}[#1]
  \pgfplotstableforeachcolumn#2\as\col{
    \pgfplotstableforeachcolumnelement{\col}\of#2\as\colcnt{%
      \ifnum\colcnt=0
        \fill[\zerocol]($ (0,-\pgfplotstablerow*\cellht) + (\col*\cellwd,0) $) rectangle+(\cellwd,\cellht);
      \fi
      \ifnum\colcnt=1
        \fill[\onecol]($ (0,-\pgfplotstablerow*\cellht) + (\col*\cellwd,0) $) rectangle+(\cellwd,\cellht);
      \fi
    }
  }
  \pgfplotstablegetrowsof{#2}
  \pgfmathtruncatemacro{\numrows}{\pgfplotsretval}
  \pgfplotstablegetcolsof{#2}
  \pgfmathtruncatemacro{\numcols}{\pgfplotsretval}
  \draw[white] (0,\cellht) grid[xstep=\cellwd,ystep=\cellht]
     (\cellwd*\numcols,\cellht-\cellht*\numrows); %
  \foreach \Z [count=\Y] in \myylabels   
   {\node[anchor=west,font=\sffamily,scale=0.7] at 
    (\cellwd*\numcols,1.5*\cellht-\cellht*\Y) {\Z};}
  \foreach \Z [count=\X,evaluate=\Z as \CC using {int(\Z*100)}] in \myxlabels    
   {\fill[black!\CC]  
   (-\cellwd+\X*\cellwd,0.5*\cellht-\cellht*\numrows)
    rectangle ++ (\cellwd,-\cellht);
    \node[anchor=west,rotate=-90,font=\sffamily,scale=0.7] at 
    (-0.5*\cellwd+\X*\cellwd,-0.5*\cellht-\cellht*\numrows) {\Z};
    }

    % next line is to put the framebox
    %\draw[red] (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}
\medskip
}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{document}

% next line is to read the data
\pgfplotstableread{matrix.cvs}{\matrixfile}


\begin{figure}[!t]
    \centering
        \drawgrid[zero color=orange, 
          one color=violet,
          cell ht=0.75em,
          cell wd=0.75em,
          % next line is to rotate the plot
          % auto,rotate=90,transform shape,
          xlabels={0.2833,0.0336,0.7766,0.0468,0.0228,0.0143,0.6877,0.0700,0.1287,0.6659,0.7123,0.0143,0.0143,0.6325,0.8049,0.7282,0.1624,0.6346,0.0564,0.0176,0.0143,0.0271,0.6463,0.7268,0.4798,0.1637,0.0297,0.3054,0.5039,0.0246,0.7140,0.3091,0.4256,0.3418,0.6493,0.0508,0.0143,0.2927,0.0291,0.6622,0.0143,0.0177,0.1610,0.1287,0.7471,0.0563,0.0143,0.3275,0.6773,0.5992},
          ylabels={0.0293,0.0211,0.0165,0.0163,0.0134,0.0382,0.0150,0.8501}]{\matrixfile}
    \caption{caption}
    \label{fig:label}
\end{figure}

\end{document}

产生的结果如下:

在此处输入图片描述

我认为这是因为定义使用了drawgrid命令,而我不知道如何将其适配到独立的图片。

答案1

您需要做的更改就是删除standalone-class 中几行无意义的行。删除figure环境、\caption- 和\label-part。另外,\centering没有必要。

相关内容