我在编辑 Latex 代码以使用 Tikz 包制作图形(游戏)时遇到了麻烦。
我正在尝试制作一个三人游戏,结合一个扩展形式(针对玩家 3)和两个矩阵(针对玩家 1 和玩家 2)。下面,我发送了我制作的图表:
我为制作这个游戏编写的 tex 代码是:
\begin{figure}[!htbp]
\centering
\caption*{Three Players Game: Combining Extensive Form with Matrix Form}\label{hybrid}
\begin{tikzpicture}[scale=1,font=\footnotesize,edge from parent/.style={draw,thick}]
% Two node styles: solid and hollow
\tikzstyle{solid node}=[circle,draw,inner sep=1.2];
\tikzstyle{hollow node}=[circle,draw, inner sep=1.2];
% Specify spacing for each level of the tree
\tikzstyle{level 1}=[level distance=15mm,sibling distance=50mm]
\tikzstyle{level 2}=[level distance=15mm,sibling distance=25mm]
% The Tree
\node(0)[hollow node]{}
child{node{}
edge from parent node[above left]{X}
}
child{node{}
edge from parent node[above right]{Y}
};
% movers
\node[above,circle,inner sep=1,yshift=4]at(0){1};
\node[below]at(0-1){
\gamemathfalse
\arrayrulewidth.75pt
\begin{game}{2}{2}[$P_{1}$][$P_{2}$]
& X & Y\\
X & $1, 1, 1$ & $2, 0, 2$\\
Y & $0, 2, 0$ & $2, 2, 2$
\end{game}
};
\node[below,xshift=-15]at(0-2){
\gamemathfalse
\arrayrulewidth.75pt
\begin{game}{2}{2}[$P_{1}$][$P_{2}$]
& X & Y\\
X & $3, 1, 3$ & $2, 2, 2$\\
Y & $1, 1, 1$ & $1, 3, 1$
\end{game}
};
\end{tikzpicture}
\end{figure}
我想修复此图中的几个问题:
我希望第一个节点上方的数字不是“1”,而是“P3”(代表玩家 3)。我尝试了几种方法将 1 替换为 P3,例如在代码行“\node(0)[hollow node]{}”中包含“label=above:{P3}”。但数字 1 仍然在那里。
我想根据扩展形式树的末尾对齐左矩阵(类似于右矩阵的对齐)。
如果可能的话,我希望将 P3 和扩展形式放在矩阵下方。也就是说,不是先有扩展形式,然后将其从上到下连接到矩阵,而是先将两个矩阵放在顶部,然后在下面放置扩展形式(如下面编辑的图所示)。
总而言之,这是我正在寻找的 Tikz/游戏/人物:
提前致谢!
答案1
以下是不同方向的树的几个示例,使用istgame
包。您可以使用\setistgrowdirection
或其交换版本\setistgrowdirection'
来更改树的生长方向。
(我使用该包绘制了游戏表tabu
,因为(如手册中所述)该包与类或任何其他加载的包sgame
不兼容。)memoir
array.sty
\documentclass{article}
\usepackage{istgame}
\usepackage{tabu,makecell,multirow}
\DeclareExpandableDocumentCommand\xcol{mO{c}m}{\multicolumn{#1}{#2}{$#3$}}
\def\gameX{%
\mbox{%
\begin{tabu}spread0pt{X[c1]X[$c1]*2{|X[$c2]}|}
\xcol2{} & \xcol2{P_2} \\
\xcol2{} & \xcol1{X} &\xcol1{Y} \\\tabucline{3-}
\multirowcell{2}{$P_1$}
& X & 1,1,1 & 2,0,2 \\\tabucline{3-}
& Y & 0,2,0 & 2,2,2 \\\tabucline{3-}
\end{tabu}%
}
}
\def\gameY{%
\mbox{%
\begin{tabu}spread0pt{X[c1]X[$c1]*2{|X[$c2]}|}
\xcol2{} & \xcol2{P_2} \\
\xcol2{} & \xcol1{X} &\xcol1{Y} \\\tabucline{3-}
\multirowcell{2}{$P_1$}
& X & 3,1,3 & 2,2,2 \\\tabucline{3-}
& Y & 1,1,1 & 1,3,1 \\\tabucline{3-}
\end{tabu}%
}
}
\pagestyle{empty}
\begin{document}
\begin{itemize}
\item a tree: downward
\begin{istgame}
\xtdistance{15mm}{50mm}
\istroot(0)[initial node]{$P_3$}
\istb{X}[al]{\gameX}[below,xshift=-8mm]
\istb{Y}[ar]{\gameY}[below,xshift=-8mm]
\endist
\end{istgame}
\item a tree: upward
\begin{istgame}
\setistgrowdirection'{north}
\xtdistance{15mm}{50mm}
\istroot(0)[initial node]<-90>{$P_3$}
\istb{X}[bl]{\gameX}
\istb{Y}[br]{\gameY}
\endist
\end{istgame}
\item a tree: toward the right
\begin{istgame}
\setistgrowdirection'{east}
\xtdistance{20mm}{15mm}
\istroot(0)[initial node]<180>{$P_3$}
\istb{X}[al]{\gameX}[above right,yshift=-2mm]
\istb{Y}[bl]{\gameY}
\endist
\end{istgame}
\end{itemize}
\end{document}
添加:您可以按照自己的喜好绘制战略游戏。例如,如果您更喜欢使用环境tabular
(到tabu
),请将上面的\def\gameX
和\def\gameY
部分替换为以下内容:
\def\gameX{%
\mbox{%
\begin{tabular}{cc|c|c|}
\xcol2{} & \xcol2{P_2} \\
\xcol2{} & \xcol1{X} &\xcol1{Y} \\\cline{3-4}
\multirowcell{2}{$P_1$}
& X & 1,1,1 & 2,0,2 \\\cline{3-4}
& Y & 0,2,0 & 2,2,2 \\\cline{3-4}
\end{tabular}%
}
}
\def\gameY{%
\mbox{%
\begin{tabular}{cc|c|c|}
\xcol2{} & \xcol2{P_2} \\
\xcol2{} & \xcol1{X} &\xcol1{Y} \\\cline{3-4}
\multirowcell{2}{$P_1$}
& X & 3,1,3 & 2,2,2 \\\cline{3-4}
& Y & 1,1,1 & 1,3,1 \\\cline{3-4}
\end{tabular}%
}
}
答案2
像这样吗?
\documentclass[tikz,border=2pt]{standalone}
\usepackage{tikz}
\usepackage{sgame}
\begin{document}
\begin{tikzpicture}
\node(0)[circle,draw,inner sep=1.2,label=below:$P_3$]{}
[grow'=north,sibling distance=5cm]
child{}
child{}
;
\node[anchor=south]at(0-1){
\begin{game}22[$P_1$][$P_2$]
& X & Y \\
X&1,1,1&1,1,1\\
Y&1,1,1&1,1,1
\end{game}
};
\node[anchor=south]at(0-2){
\begin{game}22[$P_1$][$P_2$]
& X & Y \\
X&1,1,1&1,1,1\\
Y&1,1,1&1,1,1
\end{game}
};
\end{tikzpicture}
\end{document}