我可以在 Tikz 中绘制如下图所示的图表吗?
我在长桌环境中尝试了以下内容。
\begin{longtable}{ p{.2\textwidth} |p{.1\textwidth} | p{.1\textwidth}| p{.1\textwidth}| p{.1\textwidth}|}
\hline
H&&\checkmark&\checkmark&\checkmark\\
\hline
G&\checkmark&&&\\
\hline
F&&\checkmark&\checkmark&\\
\hline
E&\checkmark&\checkmark&\checkmark&\checkmark\\
\hline
&A&B&C&D\\
\caption{Test}\label{ta:T}
\end{longtable}
其结果如下表。
不过,我想要一些像第一张图片那样的东西。
答案1
这几乎是标准的,您所需要的只是一个网格和一些标记的图。
\documentclass[tikz,border=3mm]{standalone}
\makeatletter
\newcommand{\myAlph}[1]{\@Alph{#1}}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw[dotted] (0,0) grid (4.5,4.5);
\draw[stealth-stealth] (0,5) node[above]{$y$} |- (5,0) node[right]{$x$};
\path foreach \X in {1,...,4}
{ (\X,0) node[below] {\myAlph{\X}} (0,\X) node[left] {\myAlph{\the\numexpr\X+4}}};
\draw plot[only marks,mark=x,mark size=4pt] coordinates
{(1,1) (2,1) (3,1) (4,1) (2,2) (3,2) (1,3) (2,4) (3,4) (4,4)};
\end{tikzpicture}
\end{document}
附录:真的只是为了好玩:纯 Ti 中的符号坐标钾Z. 它让我们知道什么时候解析什么。
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[declare function={A=1;B=2;C=3;D=4;E=1;F=2;G=3;H=4;}]
\draw[dotted] (0,0) grid (4.5,4.5);
\draw[stealth-stealth] (0,5) node[above]{$y$} |- (5,0) node[right]{$x$};
\path foreach \X in {A,...,D} { (\X,0) node[below] {\X}}
foreach \X in {E,...,H} { (0,\X) node[left] {\X}};
\draw plot[only marks,mark=x,mark size=4pt] coordinates
{(A,E) (B,E) (C,E) (D,E) (B,F) (C,F) (A,G) (B,H) (C,H) (D,H)};
\end{tikzpicture}
\end{document}
答案2
如果您想要一个比@Schrödinger's cat 更为详尽的答案:)
,那么这里您需要使用符号坐标:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel={$X$},
ylabel={$Y$},
axis lines=center,
symbolic x coords={0,A,B,C,D},
xmin={0}, xmax={D},
xtick distance=1,
symbolic y coords={0,E,F,G,H},
ymin={0}, ymax={H},
ytick distance=1,
grid = both, grid style={dotted,black!50},
every axis x label/.style={at={(current axis.south east)},right=1mm},
every axis y label/.style={at={(current axis.north west)},above=1mm},
enlargelimits={abs=30pt,upper},
]
\addplot [only marks,mark=x,mark size = 4pt] coordinates {
(A,E) (B,E) (C,E) (D,E)
(B,F) (C,F)
(A,G)
(B,H) (C,H) (D,H)
};
\end{axis}
\end{tikzpicture}
\end{document}