![我想画一个图形,中间有一个圆圈,周围有 6 个小圆圈](https://linux22.com/image/405919/%E6%88%91%E6%83%B3%E7%94%BB%E4%B8%80%E4%B8%AA%E5%9B%BE%E5%BD%A2%EF%BC%8C%E4%B8%AD%E9%97%B4%E6%9C%89%E4%B8%80%E4%B8%AA%E5%9C%86%E5%9C%88%EF%BC%8C%E5%91%A8%E5%9B%B4%E6%9C%89%206%20%E4%B8%AA%E5%B0%8F%E5%9C%86%E5%9C%88.png)
\documentclass[journal,comsoc]{IEEEtran}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\usetikzlibrary{positioning}
\begin{document}
\begin{figure}[!ht]
\centering
\begin{tikzpicture}[baseline, mindmap, grow cyclic, text width=2.0pt, minimum size=0.1pt, align=flush center, every node/.style=concept, concept color=blue!20!white,opacity=0.90,
level 1/.append style={level distance=2.5cm,sibling angle=60},
]
\node[concept,ball color=blue!20!white,opacity=0.90, minimum size=3.5em, text width=5em ]{\textbf{Features}}
child {node [text width=3.8em, circle,ball color=blue!30, minimum size=3.0em]{K}}
child {node [text width=3.8em, circle,ball color=blue!30, minimum size=3.0em]{A}}
child {node [text width=3.9em, circle,ball color=blue!30, minimum size=3.0em]{P}}
child {node [text width=3.8em, circle,ball color=blue!30, minimum size=3.0em]{Z}}
child {node [text width=3.8em, circle,ball color=blue!30, minimum size=3.0em]{MM}}
child {node [text width=3.8em, circle,ball color=blue!30, minimum size=3.0em]{Q}
};
\end{tikzpicture}
\caption{Features.} \label{fig:features}
\end{figure}
\end{document}
我想知道如何用箭头代替连接线,如图所示
答案1
编辑:
直接在文档中使用纯包绘制此(简单)图表tikz
并不困难。在此过程中,您需要执行以下操作:
- 定义节点样式(颜色作为参数,大小和
text width
多行文本的对齐方式align=center
(或者flush center
当你不喜欢节点文本的最终连字时) planet
定义和satellite
节点中心之间的距离- 在循环中在 \planet satelite 节点之间绘制
satellite
和箭头and
,这决定了卫星和其中的文本的颜色:
\documentclass[journal,comsoc]{IEEEtran}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usepackage{caption}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[
planet/.style = {circle, draw=blue, semithick, fill=blue!30,
font=\large\bfseries,
text width=24mm, inner sep=1mm,align=center}, %<---
satellite/.style = {circle, draw=#1, semithick, fill=#1!30,
text width=16mm, inner sep=1mm, align=center},%<---
arr/.style = {-{Triangle[length=3mm,width=6mm]}, color=#1,
line width=3mm, shorten <=1mm, shorten >=1mm}
]
% planet
\node (p) [planet] {Features};
% satellites and connections
\foreach \i/\j [count=\k] in {red/K, cyan/A, purple/P, teal/Z, orange/lack of resistance, yellow/Q}
{
\node (s\k) [satellite=\i] at (\k*60:3.4) {\j};
\draw[arr=\i] (p) -- (s\k);
}
\end{tikzpicture}
\caption{Cycle of Interaction}
\end{figure}
\end{document}
这使:
答案的第一个版本:
像这样(重建所显示的图像)吗?
针对此类图表设计了以下smartdiagram
包:
\documentclass{article}
\usepackage{smartdiagram}
\usetikzlibrary{arrows.meta}
\usepackage{caption}
\begin{document}
\begin{figure}
\smartdiagramset{
planet font=\large\bfseries,planet text width=28mm,
satellite font=\normalsize\bfseries, satellite text width=22mm,
distance planet-satellite=44mm,
/tikz/connection planet satellite/.append style={-{Triangle[length=3mm,width=6mm]},
line width=3mm},
}
\centering
\smartdiagram[constellation diagram]%
{
% text in the planet
Chaleneges of Blockchain,
% texts in satellites
Privacy, Authentication, Bandwidth, Bootstraping,
Usability, Data Malleability, Wasted Resources, Scalability%
}
\caption{Cycle of Interaction}
\end{figure}
\end{document}
或者使用六颗卫星,并在您的 MWE 中提供文本:
\documentclass{article}
\usepackage{smartdiagram}
\usepackage{caption}
\begin{document}
\begin{figure}
\smartdiagramset{
planet font=\large\bfseries, planet text width=5em,
satellite font=\normalsize,
}
\centering
\smartdiagram[constellation diagram]%
{
% text in the planet
Features,
% texts in satellites
K, A, P, Z, MM, Q%
}
\caption{Cycle of Interaction}
\end{figure}
\end{document}
附录:
我忽略了使用的文档类...不幸的是,smartdiagram
它还不能与IEEEtran
文档类一起使用。要解决这种不兼容性,有两种可能性:
- 使用包绘制上述命题
standalone
,然后将生成的 pdf 文件导入文档。例如:
\documentclass[tikz, margin=1pt]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[
planet/.style = {circle, draw=blue, semithick, fill=blue!30,
font=\large\bfseries, inner sep=2mm},
satellite/.style = {circle, draw=#1, semithick, fill=#1!30,
minimum size=4em, inner sep=2mm},
arr/.style = {-{Triangle[length=3mm,width=6mm]}, color=#1,
line width=3mm, shorten <=1mm, shorten >=1mm}
]
% planet
\node (p) [planet] {Features};
% satellites and connections
\foreach \i/\j [count=\k] in {red/K, cyan/A, purple/P, teal/Z, orange/MM, yellow/Q}
{
\node (s\k) [satellite=\i] at (\k*60:3.2) {\j};
\draw[arr=\i] (p) -- (s\k);
}
\end{tikzpicture}
\end{document}
它生成如上面第二个示例所示的图像并将其pdf
文件(例如名为 cycle-smartdiagram)插入到您的文档中,如下所示:
\documentclass[journal,comsoc]{IEEEtran}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{figure}[h!]
\centering
\includegraphics{cycle-smartdiagram}% or whatever name you select
\caption{Cycle of Interaction}
\label{fig:cycle}
\end{figure}
\end{document}
- 直接在文档中使用纯包绘制此(简单)图表
tikz
(请参阅答案顶部的编辑)
答案2
这是一个解决方案。我隐藏了默认的思维导图连接器(使用concept color=none
),并使用arrows.meta
库创建新的箭头连接器。
(更新@Zarko 的箭头与我的类似,但实现起来更简单。我使用了另一个文档中不必要的复杂代码。我将切换到他的箭头,但保留我的答案以使用思维导图显示答案。)
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{mindmap,arrows.meta}
\begin{document}
\begin{tikzpicture}[
mindmap, every node/.style={concept, ball color=blue!30},
concept color=none, grow cyclic,
mindmapArrow/.style={-{Triangle[length=3mm,width=6mm]},
color=blue!20!white, line width=3mm,
shorten <=2mm, shorten >=2mm},
root concept/.append style={minimum size=3.5em, text width=5em,
font=\bfseries},
level 1/.append style={sibling angle=60, level distance=2.5cm,
minimum size=3em, text width=2em}]
\node (root) [root concept] {Features}
child { node (child1) {K} }
child { node (child2) {A} }
child { node (child3) {P} }
child { node (child4) {Z} }
child { node (child5) {MM} }
child { node (child6) {Q} };
\foreach \child in {1,...,6} {
\draw[mindmapArrow] (root) -- (child\child);
}
\end{tikzpicture}
\end{document}
答案3
也许您可以尝试使用基于等的不同(且更简单)的方法\begin{tikzpicture}
。
例如,如果你使用 Ipe 程序,你可以让你的生活更轻松(http://ipe.otfried.org),它是免费的。然后您可以轻松绘制图表,甚至可以使用 LaTeX 字体和具有不同不透明度的颜色。众所周知,Ipe 导出的 .eps 文件可以包含在您的 .tex 文件中,如下所示
\begin{figure}[h!]
\centering
\includegraphics[scale=0.6]{name.eps}
\caption{...}
\label{fig:..}
\end{figure}
我希望这会有所帮助并提供更简单的解决方案。