下面是使用 Latex 生成 3 个节点和 3 条边的图的代码,如图所示。它运行完美,只有一个小问题。因此,每条边有 7、31、31,代表边的权重。
我的问题是,如何增加数字大小(7,31,31),使其变得更大,看起来更清晰。我希望编码增加权重的大小。我会得到相同的结果,但边缘权重(7,31,31)在图片中看起来会更大。
我附上了第二张图片;正如你所看到的,重量(7,31,31)的尺寸变大了,但是其他部分保持不变 - 只是这样的视角。
\documentclass[11pt]{scrartcl}
\centering
\newcommand\rad{6.5}
\PassOptionsToPackage{usenames,dvipsnames,svgnames}{xcolor}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning,automata}
\begin{document}
\begin{tikzpicture}[>=stealth',shorten >=1pt,node distance=7cm,on grid,initial/.style ={}]
\node[state] (S1) at (120:\rad) {$S1$};
\node[state] (S2) at (240:\rad) {$S2$};
\node[state] (S3) at (360:\rad) {$S3$};
\tikzset{mystyle/.style={->,double=orange}}
\tikzset{every node/.style={fill=white}}
\path (S1) edge [mystyle] node {$7$} (S2)
(S2) edge [mystyle] node {$31$} (S3)
(S1) edge [mystyle] node {$31$} (S3);
\end{tikzpicture}
\end{document}
答案1
\documentclass[11pt]{scrartcl}
\PassOptionsToPackage{usenames,dvipsnames,svgnames}{xcolor}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,automata,
positioning,
quotes}
\begin{document}
\begin{tikzpicture}[
state/.append style = {minimum size=1.8em, inner sep=0pt},
every edge/.style = {draw=orange, semithick,
-{Stealth[scale=0.8]}, shorten > = 1pt},
every edge quotes/.style = {fill=white, font=\footnotesize}
]
\newcommand\rad{1.44} % for distance ~ 1cm between nodes
%
\node[state] (S1) at (120:\rad) {$S1$};
\node[state] (S2) at (240:\rad) {$S2$};
\node[state] (S3) at (360:\rad) {$S3$};
\path (S1) edge ["$7$" ] (S2)
(S2) edge ["$33$"] (S3)
(S1) edge ["$33$"] (S3);
\end{tikzpicture}
\end{document}
编辑(1):
如果您希望将节点的位置设在其他地方,则需要选择不同的坐标位置。在上述 MWE(最小工作示例)中,坐标遵循 MWE 中定义的坐标。它们在极坐标系中定义:<angle>:<distance
其中,在您的例子中,坐标的起点被视为(0,0)
。
如果将节点的位置更改为例如
\node[state] (S1) at (180:\rad) {$S1$};
\node[state] (S2) at (270:\rad) {$S2$};
\node[state] (S3) at ( 60:\rad) {$S3$};
那么结果图像是:
当然,你可以定义节点的笛卡尔坐标。例如,使用相对坐标系:
\documentclass[11pt]{scrartcl}
\PassOptionsToPackage{usenames,dvipsnames,svgnames}{xcolor}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,automata,
positioning,
quotes}
\begin{document}
\begin{tikzpicture}[
state/.append style = {minimum size=1.8em, inner sep=0pt},
every edge/.style = {draw=orange, semithick,
-{Stealth[scale=0.8]}, shorten > = 1pt},
every edge quotes/.style = {fill=white, font=\footnotesize}
]
%
\node[state] (S1) at (0,0) {$S1$};
\node[state, above right=1cm and 1.4cm of S1] (S2) {$S2$};
\node[state, below right=1.4cm and 1cm of S1] (S3) {$S3$};
\path (S1) edge ["$7$" ] (S2)
(S2) edge ["$31$"] (S3)
(S1) edge ["$31$"] (S3);
\end{tikzpicture}
\end{document}
请注意,根据(基本)几何学,如果节点对称放置在平面上,即它们位于圆上,则相等距离(约 1cm)是可能的。您可以计算圆的半径。这很简单,如果您考虑距离,请考虑节点中心之间的距离。
编辑(2): 从下面的评论可以看出,您关心的只是边缘标签字体 sute。我的答案中的所有 MWE 都是由代码行决定的:
every edge quotes/.style = {fill=white, font=\Large} % <--- here you can set font size of edge labels
使用上述设置可得出:
如果\Large
不够,您可以将其更改为\huge
甚至\Huge
预定义字体大小,或者使用以下方式定义自己的大小:
font=\fontsize{<desired size>}{<baselineskip>}\selectfont
例如font=\fontsize{24pt}{28pt}\selectfont
,对于一些愚蠢的大尺寸边缘标签: