我正在使用 TikZ 绘制一个相当大的图表,其中的点是从 csv 文件生成的。 (Python 脚本从 csv 获取坐标,并输出相应的节点线。) 一个最小的例子是这样的:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (A) at (1,3) {A};
\node (B) at (1,1) {B};
\draw (A) -- (B);
\end{tikzpicture}
\end{document}
产生如下结果:
我如何使它看起来更像下面这样(忽略大写/小写差异):
答案1
如果你想稍微自动化一下,这里有一个解决方案:
label distance
根据需要使用来放置标签并相应地设置节点的外观。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
label distance=2pt,
every node/.style={
draw,
fill=black,
circle,
inner sep=0pt,
minimum size=3pt}]
\node[label=above left:a] (A) at (1,3) {};
\node[label=above left:b] (B) at (1,1) {};
\draw (A) -- (B);
\end{tikzpicture}
\end{document}
答案2
- 使用形状的节点
circle
。 - 放一个标签在该节点上(该节点只是引用父节点位置的另一个节点)。
- 连接节点,TikZ 会自动选择它们的边界。
(这inner sep
指定一个半径,将其乘以 √2 即可得到实际半径——它计算一个正方形的半径,正方形的边长为 2× 内间隔。Aminimum size
指定圆的直径。
代码
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[dot/.style={shape=circle, fill, draw, inner sep=+1.5pt}]
\node[dot, label=above left:a] (A) at (1,3) {};
\node[dot, label=above left:b] (B) at (1,1) {};
\draw (A) -- (B);
\end{tikzpicture}
\begin{tikzpicture}[
dot/.style={
shape=circle, fill, draw, inner sep=+1.5pt,
name={#1}, label={$#1$}, node contents=},
label position=above left]
\node at (1,3) [dot=a];
\node at (1,1) [dot=b];
\draw (a) -- (b);
\end{tikzpicture}
\end{document}