编辑

编辑

好的,所以我的问题是这样的。我有这个代码(前言包含一个 tikz、graphicx 和 tikz 定位库的包)。

\documentclass[11pt]{article}
\usepackage{tikz, graphicx, geometry}
\geometry{margin=1in}
\usetikzlibrary{positioning}
\renewcommand{\baselinestretch}{1.4}

\begin{document}
\begin{figure}[h]\centering
\begin{tikzpicture}[round/.style={circle, draw=black!80, fill=black!10, very thick, minimum size=5mm}]
% Nodes
\node[round] (a) {a}; 
\node[round] (f) [right=of a] {f};
\node[round] (e) [below=of a] {e};
\node[round] (b) [below=of f] {b};
\node[round] (c) [right=of f] {c};
\node[round] (g) [below=of c] {g};
\node[round] (h) [right=of c] {h};
\node[round] (d) [right=of g] {d};
% Lines
\draw[very thick, =] (a.east) -- (f.west); 
\draw[very thick, =] (f.east) -- (c.west);
\draw[very thick, =] (c.east) -- (h.west);
\draw[very thick, =] (a.south) -- (e.north);
\draw[very thick, =] (e.east) -- (b.west);
\draw[very thick, =] (b.east) -- (g.west);
\draw[very thick, =] (g.east) -- (d.west);
\draw[very thick, =] (f.south) -- (b.north);
\draw[very thick, =] (c.south) -- (g.north);
\draw[very thick, =] (h.south) -- (d.north);
\draw[very thick, =] (a.east) -- (f.west);
\draw[very thick, =] (a.east) -- (f.west);
\end{tikzpicture}
\end{figure}
\end{document}

图表中的弯曲线条

基本上,我想修复弯曲的线条并使其更直。如果有的话,我更喜欢一种简单的方法来解决这个问题...

PS. 最后的某些代码是复制粘贴的。基本上这些行是为了加快任务速度而复制粘贴的,所以请忽略最后两行。(我不知道如果我删除它们是否有助于理解这一点,但请告诉我。)编辑:抱歉,我指的是这些行

\draw[very thick, =] (a.east) -- (f.west);
\draw[very thick, =] (a.east) -- (f.west);

就在这里结束吧。。抱歉造成误解。我不确定是否应该完全包括它们。

附言:无法复制粘贴完整代码。这是学校作业的一部分。但我想我已经掌握了主要内容。

编辑 2:完整的图表应该看起来有点像这样(这是我从教科书上取下来的版本,用油漆重新绘制,但我希望它看起来更有吸引力)。

在此处输入图片描述

基本上,油漆上的线条更糟糕。所以我第一次尝试使用 tikz 来添加它们。

答案1

不如好的 cfr 答案简洁...而是使用链图并定义​​更大的最小节点尺寸。

\documentclass[tikz,
               border=3mm
               ]{standalone}
\usetikzlibrary{chains}
\makeatletter
\tikzset{suppress join/.code={\def\tikz@after@path{}}}
\makeatother

\begin{document}
\begin{tikzpicture}[
 start chain = A going right,
round/.style = {circle, draw=black!80, fill=black!10, very thick, 
                minimum size=7mm,
                on chain, join=by {-, very thick}},
                ]
% Nodes
\begin{scope}[every node/.style = {round}]
\node (a) {a};
\node (f) {f};
\node (c) {c};
\node (h) {h};
\node (e) [suppress join,below=of a] {e};
\node (b) {b};
\node (g) {g};
\node (d) {d};
\end{scope}
% Lines
\draw[very thick]   (a) -- (e)
                    (a) to [bend left] (h)
                    (f) -- (b)
                    (c) -- (g)
                    (h) -- (d)
                    (e) to [bend right] (d);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

您只需增加 即可minimum size。您还可以设置统一的text heighttext depth,同时将字母与基线对齐,如下所示。我不明白您所说的删除代码片段是什么意思,所以我只做了一个简单的示例来做同样的事情。更详细的代码的原理是相同的:只需为文本设置标准高度/深度即可。

\documentclass[border=10pt,tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
  \graph [ nodes={circle, draw, fill=gray!30, anchor=mid, text height=1.5ex, text depth=.25ex} ]
  {
    a -- { f -- c -- h } , e -- b -- g -- d , a -- e , f -- b , c -- g , h -- d
  };
\end{tikzpicture}
\end{document}

标准高度/深度

如果您希望节点具有相同的大小,请添加标准text width并将内容居中。

\documentclass[border=10pt,tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
  \graph [ nodes={circle, draw, fill=gray!30, anchor=mid, text height=1.5ex, text depth=.25ex, text width=1.5ex, align=center} ]
  {
    a -- { f -- c -- h } , e -- b -- g -- d , a -- e , f -- b , c -- g , h -- d
  };
\end{tikzpicture}
\end{document}

一刀切

编辑

请注意,上述原则与节点之间如何绘制或绘制什么无关。只是显示添加text height=<>, text depth=<>, text width=<>, align=center对节点对齐的影响。

不过,你可以使用我上面使用的图形语法添加曲线。例如,

\documentclass[border=10pt,tikz]{standalone}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
  \graph [ nodes={circle, draw, fill=gray!30, anchor=mid, text height=1.5ex, text depth=.25ex, text width=1.5ex, align=center} ]
  {
    a -- { f -- c -- h } , e -- b -- g -- d , a -- e , f -- b , c -- g , h -- d , a --[bend left] h , d --[bend left] e
  };
\end{tikzpicture}
\end{document}

曲线

相关内容