我对使用“tikzpicture”有疑问。我打算画一个图形,其中包括一个顶部矩形、中间圆形和底部矩形。我尝试绘制我想要的图形,同时考虑每个形状的协调性。但我想根据上部形状的位置来考虑每个形状的位置。我编写了我想要的代码,但我的形状之间有交集。
这是我的代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\tikzstyle{cir}=[circle,draw=blue!50,fill=blue!20,thick,
inner sep=0pt,minimum size=3cm]
\tikzstyle{rec}=[rectangle,draw=black!50,fill=black!20,thick,
inner sep=0pt,minimum size=3cm]
\begin{figure}
\centering
\begin{tikzpicture}
\node[rec] (top_rec) {};
\node[cir] (middle_cir) [below of=top_rec] {};
\node[rec] (down_rec) [below of=middle_cir] {};
\end{tikzpicture}
\caption{Caption}
\label{fig:my_label}
\end{figure}
\end{document}
答案1
这是你想要的吗?
请注意,我改变了节点样式中的锚点,并明确地使用at
和传递锚点来改变它们的位置。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\tikzstyle{cir}=[circle,draw=blue!50,fill=blue!20,thick,
inner sep=0pt,minimum size=3cm,anchor=north] % added anchor
\tikzstyle{rec}=[rectangle,draw=black!50,fill=black!20,thick,
inner sep=0pt,minimum size=3cm,anchor=north] % added anchor
\begin{figure}
\centering
\begin{tikzpicture}[]
\node[rec] (top_rec) {A};
\node[cir] (middle_cir) at (top_rec.south) {B}; % changed
\node[rec] (down_rec) at (middle_cir.south) {C}; % changed
\end{tikzpicture}
\caption{Caption}
\label{fig:my_label}
\end{figure}
\end{document}
答案2
使用chains
和positioning
库,并将节点样式定义为`tikzpicture 的选项:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{chains,
positioning}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[
node distance = 0pt,
start chain = going below,
C/.style = {circle, draw=blue!50,thick, fill=blue!20,
inner sep=0pt, minimum size=3cm,
on chain},
R/.style = {draw=black!50, thick, fill=black!20,
inner sep=0pt, minimum size=3cm,
on chain}
]
\node[R] (n1) {};
\node[C] (n2) {};
\node[R] (n3) {};
\end{tikzpicture}
\caption{Caption}
\label{fig:my_label}
\end{figure}
\end{document}
编译结果为:
附录: 关于您对新请求的评论:
- 请不要在我的答案中添加一些代码来改变它。如果您有新问题,请提出新问题,如果您想澄清您的问题,请编辑您的问题并在那里描述它,以便网站的其他成员可以看到它。
- 您可以将图像中矩形之间的带标签箭头绘制为带引号的边。请参阅下面的 MWE。
- 在下面的 MWE 中,节点样式声明也发生了变化。我这样做是为了展示如何定义它的更多可能性,以及它们支持您在评论中的新请求。
- 您可以根据需要更改引文的样式和文本。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
chains,
positioning,
quotes}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[
node distance = 0pt,
start chain = going below,
base/.style = {draw=#1!50, thick, fill=#1!20,
inner sep=0pt, outer sep=0pt, minimum size=3cm,
on chain}, % <--- new
C/.style = {circle, base=blue}, % <--- changed
R/.style = {base=black}, % <--- changed
every edge/.style = {draw, -Straight Barb, semithick, bend angle=45}, % <--- for edges
every edge quotes/.style = {auto=right, font=\small\bfseries} % <--- for quotes on edges
]
\node[R] (n1) {};
\node[C] (n2) {};
\node[R] (n3) {};
% edges
\draw (n1.west) edge [bend right, "A"] (n3.west)
(n3.east) edge [bend right, "B"] (n1.east);
\end{tikzpicture}
\caption{Caption}
\label{fig:my_label}
\end{figure}
\end{document}