我试图从此图像中剪下箭头,但没有成功。其次,有什么方法可以让文本左对齐吗?
\documentclass[10pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,fit,positioning,shapes.symbols,chains}
\usetikzlibrary{positioning}
\usepackage{caption}
\usetikzlibrary{backgrounds} %border for tikzpicture
\begin{document}
\begin{figure}[h]
\centering
\usetikzlibrary{calc,matrix,decorations.markings,decorations.pathreplacing}
\definecolor{colone}{RGB}{209,220,204}
\definecolor{coltwo}{RGB}{204,222,210}
\definecolor{colthree}{RGB}{207,233,232}
\definecolor{colfour}{RGB}{255,145,100}
\definecolor{colfive}{RGB}{210,240,110}
\definecolor{colsix}{RGB}{243,235,179}
\definecolor{colseven}{RGB}{241,231,163}
%\definecolor{colfive}{RGB}{245,238,197}
\tikzset{
table/.style={
matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={rectangle,text width=2cm,align=center},
text depth=1.25ex,
text height=2.5ex,
nodes in empty cells
}
}
\renewcommand*{\familydefault}{\sfdefault}
\newcommand{\cbox}[1]{\parbox[t]{2cm}{\centering #1}}
%\begin{tikzpicture}[thick,scale=0.85, framed]
\begin{tikzpicture}[thick,scale=0.84, every node/.style={scale=0.84}, framed]
\matrix (mat) [table] {
|[fill=colfour]| & |[fill=colfour]| & |[fill=colfour]|
& |[fill=colfour]| & |[fill=colfour]| & \\
|[fill=colfive]| & |[fill=colfive]| & |[fill=colfive]|
& |[fill=colfive]| & |[fill=colfive]| & \\
|[fill=colsix]| & |[fill=colsix]| & |[fill=colsix]|
& |[fill=colsix]| & |[fill=colsix]| & |[fill=colsix]| \\
|[fill=colseven]| & |[fill=colseven]| & |[fill=colseven]|
& |[fill=colseven]| & |[fill=colseven]| & |[fill=colseven]| \\
|[fill=colone]| & |[fill=coltwo]| & |[fill=colthree]|
& |[fill=coltwo]| & |[fill=colone]| & |[fill=colone]| \\
|[fill=colone]| & |[fill=coltwo]| & |[fill=colthree]|
& |[fill=coltwo]| & |[fill=colone]| & |[fill=colone]| \\
|[fill=colone]| & |[fill=coltwo]| & |[fill=colthree]|
& |[fill=coltwo]| & |[fill=colone]| & \\
|[fill=colone]| & |[fill=coltwo]| & |[fill=colthree]|
& |[fill=coltwo]| & |[fill=colone]| & \\
};
% horizontal rules
\foreach \row in {2,3,4}
\draw[white] (mat-\row-1.north west) -- (mat-\row-6.north east);
\draw[white,ultra thick] (mat-1-1.north west) -- (mat-1-6.north east);
\draw[white,ultra thick] (mat-5-1.north west) -- (mat-5-6.north east);
% vertical rules
\foreach \col in {2,3,4,5}
\draw[white] (mat-5-\col.north west) -- (mat-8-\col.south west);
% The labels
\node[fill=colfour] at (mat-1-3) {First row text required to be left justified };
\node[fill=colfive] at (mat-2-3) {Second row text includes (required left justified)};
\node[fill=colsix] at (mat-3-3) {This is third line in this image(required left justified)};
\node[fill=colseven] at (mat-4-3) {Fourth row (required left justified)};
\node at ([yshift=-10pt]mat-6-1) {\cbox{abcde}};
\node at ([yshift=-10pt]mat-6-2) {\cbox{fghi\\\mbox{}}};
\node at ([yshift=-10pt]mat-6-3) {\cbox{this is cbox}};
\node at ([yshift=-10pt]mat-6-4) {\cbox{this is another cbox}};
\node at ([yshift=-10pt]mat-6-5) {\cbox{this is cbox \\\mbox{}}};
\node[rotate = 90] at ([xshift=-52pt]mat-3-1.north)
{\textsc{Distribution}};
\node at ([yshift=-19pt, xshift=-0.5cm]mat-8-3.south)
{\textsc{Trying to produce this picture excluding arrowhead }};
% Erase some visible lines outside the arrow
\fill[white] (mat-1-5.north east) -- (mat-5-6.north east)
-- (mat-1-6.north east) -- cycle;
\fill[white] (mat-8-5.north east) -- (mat-5-6.north east)
-- (mat-8-6.north east) -- cycle;
% Draw the arrow tip
\shade[top color=colfour!70, bottom color=colfour!70,
middle color=colseven, draw=white, ultra thick]
(mat-1-5.north) -- (mat-5-6.north) -- (mat-8-5.south) --
(mat-8-5.south east) -- (mat-5-6.north east) -- (mat-8-5.south east) --
(mat-5-6.north east) -- (mat-1-5.north east) -- cycle;
% The slanted "Margin" labels
\begin{scope}[decoration={markings,
mark=at position .5 with \node[transform shape] {Exclude this arrowhead};}]
\path[postaction={decorate}]
( $ (mat-1-5.north)!0.5!(mat-1-5.north east) $ )
-- ( $ (mat-5-6.north)!0.5!(mat-5-6.north east) $ );
\path[postaction={decorate}]
( $ (mat-5-6.north)!0.5!(mat-5-6.north east) $ )
-- ( $ (mat-8-5.south)!0.5!(mat-8-5.south east) $ );
\end{scope}
% The braces
\draw[decorate, decoration={brace, mirror, raise=6pt}]
(mat-1-1.north west) -- (mat-5-1.north west);
\draw[decorate, decoration={brace, mirror, raise=6pt}]
(mat-8-1.south west) -- (mat-8-5.south);
\end{tikzpicture}
\caption{This is a caption}
\caption*{Source: using tikzlibrary}
\label{fig:1}
\end{figure}
\end{document}
答案1
- 首先,注释/删除注释标识为箭头一部分的三个代码块。
- 在 中
\matrix
,删除每行的最后一个单元格。即删除最后一个&
以及它和 之间的所有内容\\
。 - 在绘制水平规则的代码块中,将列号替换
6
为5
。 - 对于节点,添加
right
到选项中,并将其放置at (mat-rowno-1.west)
在 而不是 的位置(mat-rowno-3)
。
\documentclass[10pt,a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{arrows,decorations.pathmorphing,backgrounds,fit,positioning,shapes.symbols,chains}
\usetikzlibrary{positioning}
\usepackage{caption}
\usetikzlibrary{backgrounds} %border for tikzpicture
\begin{document}
\begin{figure}[h]
\centering
\usetikzlibrary{calc,matrix,decorations.markings,decorations.pathreplacing}
\definecolor{colone}{RGB}{209,220,204}
\definecolor{coltwo}{RGB}{204,222,210}
\definecolor{colthree}{RGB}{207,233,232}
\definecolor{colfour}{RGB}{255,145,100}
\definecolor{colfive}{RGB}{210,240,110}
\definecolor{colsix}{RGB}{243,235,179}
\definecolor{colseven}{RGB}{241,231,163}
%\definecolor{colfive}{RGB}{245,238,197}
\tikzset{
table/.style={
matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={rectangle,text width=2cm,align=center},
text depth=1.25ex,
text height=2.5ex,
nodes in empty cells
}
}
\renewcommand*{\familydefault}{\sfdefault}
\newcommand{\cbox}[1]{\parbox[t]{2cm}{\centering #1}}
%\begin{tikzpicture}[thick,scale=0.85, framed]
\begin{tikzpicture}[thick,scale=0.84, every node/.style={scale=0.84}, framed]
\matrix (mat) [table] {
|[fill=colfour]| & |[fill=colfour]| & |[fill=colfour]| & |[fill=colfour]| & |[fill=colfour]| \\
|[fill=colfive]| & |[fill=colfive]| & |[fill=colfive]| & |[fill=colfive]| & |[fill=colfive]| \\
|[fill=colsix]| & |[fill=colsix]| & |[fill=colsix]| & |[fill=colsix]| & |[fill=colsix]| \\
|[fill=colseven]| & |[fill=colseven]| & |[fill=colseven]|& |[fill=colseven]| & |[fill=colseven]| \\
|[fill=colone]| & |[fill=coltwo]| & |[fill=colthree]|& |[fill=coltwo]| & |[fill=colone]| \\
|[fill=colone]| & |[fill=coltwo]| & |[fill=colthree]|& |[fill=coltwo]| & |[fill=colone]| \\
|[fill=colone]| & |[fill=coltwo]| & |[fill=colthree]|& |[fill=coltwo]| & |[fill=colone]| \\
|[fill=colone]| & |[fill=coltwo]| & |[fill=colthree]|& |[fill=coltwo]| & |[fill=colone]| \\
};
% horizontal rules
\foreach \row in {2,3,4}
\draw[white] (mat-\row-1.north west) -- (mat-\row-5.north east); % changed from 6 to 5 in this line
\draw[white,ultra thick] (mat-1-1.north west) -- (mat-1-5.north east); % changed from 6 to 5 in this line
\draw[white,ultra thick] (mat-5-1.north west) -- (mat-5-5.north east); % changed from 6 to 5 in this line
% vertical rules
\foreach \col in {2,3,4,5}
\draw[white] (mat-5-\col.north west) -- (mat-8-\col.south west);
% The labels
% added right, and changed coordinate for the following four lines
\node[fill=colfour,right] at (mat-1-1.west) {First row text required to be left justified };
\node[fill=colfive,right] at (mat-2-1.west) {Second row text includes (required left justified)};
\node[fill=colsix,right] at (mat-3-1.west) {This is third line in this image(required left justified)};
\node[fill=colseven,right] at (mat-4-1.west) {Fourth row (required left justified)};
\node at ([yshift=-10pt]mat-6-1) {\cbox{abcde}};
\node at ([yshift=-10pt]mat-6-2) {\cbox{fghi\\\mbox{}}};
\node at ([yshift=-10pt]mat-6-3) {\cbox{this is cbox}};
\node at ([yshift=-10pt]mat-6-4) {\cbox{this is another cbox}};
\node at ([yshift=-10pt]mat-6-5) {\cbox{this is cbox \\\mbox{}}};
\node[rotate = 90] at ([xshift=-52pt]mat-3-1.north)
{\textsc{Distribution}};
\node at ([yshift=-19pt, xshift=-0.5cm]mat-8-3.south)
{\textsc{Trying to produce this picture excluding arrowhead }};
% Erase some visible lines outside the arrow
%\fill[] (mat-1-5.north east) -- (mat-5-6.north east)
%-- (mat-1-6.north east) -- cycle;
%\fill[white] (mat-8-5.north east) -- (mat-5-6.north east)
%-- (mat-8-6.north east) -- cycle;
%% Draw the arrow tip
%\shade[top color=colfour!70, bottom color=colfour!70,
%middle color=colseven, draw=white, ultra thick]
%(mat-1-5.north) -- (mat-5-6.north) -- (mat-8-5.south) --
%(mat-8-5.south east) -- (mat-5-6.north east) -- (mat-8-5.south east) --
%(mat-5-6.north east) -- (mat-1-5.north east) -- cycle;
%
%% The slanted "Margin" labels
%\begin{scope}[decoration={markings,
%mark=at position .5 with \node[transform shape] {Exclude this arrowhead};}]
%\path[postaction={decorate}]
%( $ (mat-1-5.north)!0.5!(mat-1-5.north east) $ )
%-- ( $ (mat-5-6.north)!0.5!(mat-5-6.north east) $ );
%\path[postaction={decorate}]
%( $ (mat-5-6.north)!0.5!(mat-5-6.north east) $ )
%-- ( $ (mat-8-5.south)!0.5!(mat-8-5.south east) $ );
%\end{scope}
% The braces
\draw[decorate, decoration={brace, mirror, raise=6pt}]
(mat-1-1.north west) -- (mat-5-1.north west);
\draw[decorate, decoration={brace, mirror, raise=6pt}]
(mat-8-1.south west) -- (mat-8-5.south east);
\end{tikzpicture}
\caption{This is a caption}
\caption*{Source: using tikzlibrary}
\label{fig:1}
\end{figure}
\end{document}