smartdiagram
添付のバブル ダイアグラムを生成するLatex パッケージの次のコードを入手しました。
でも、私は子衛星を持つ(下のプロトタイプ画像を参照)。
- でこれを行うことは可能ですか? できない場合、または または同様のもの
smartdiagram
を使用してこれを直接複製するにはどうすればよいですか?tikz
ありがとう!
\documentclass[a4paper]{article}
\usepackage{smartdiagram}
\begin{document}
\smartdiagramset{
bubble center node font = \footnotesize,
bubble node font = \footnotesize,
% specifies the minimum size of the bubble center node
bubble center node size = 0.1cm,
% specifies the minimum size of the bubbles
bubble node size = 0.9cm,
% specifies which is the distance among the bubble center node and the other bubbles
distance center/other bubbles = 0.5cm,
% sets the distance from the text to the border of the bubble center node
%distance text center bubble = 0.5cm,
}
\smartdiagram[bubble diagram]{
\normalsize{Interest} \\ \normalsize{Areas},
\textbf{DLTs/} \\ \textbf{Blockchain,} \\ \textbf{Web3},
\textbf{Big/Fast Data} \\ \textbf{\& Streaming},
\textbf{Artificial} \\ \textbf{Intelligence},
\textbf{Functional} \\ \textbf{Programming}
}
\end{document}
私が持っているもの vs. 私が欲しいもの
私が試したこと
私は、衛星をFunctional Programming
新しい図に置き換えて、衛星が新しい惑星になり、より多くの衛星(子)を持つことができるようにしようとしました。しかし、結果はめちゃくちゃでした。つまり、
\textbf{Functional} \\ \textbf{Programming}
に
\smartdiagram[bubble diagram]{ ... }
答え1
OP の回答のリメイク。今回は Chat-GPT の助けを借りずに。結果のコードはより短く、より明確です。
\documentclass[margin=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds,
calc,
positioning,}
\begin{document}
\begin{tikzpicture}[
base/.style = {circle, draw=white, line width=1.5pt, draw opacity=1,
minimum size=#1, align=center, font=\bfseries},
planet/.style = {base=32mm, fill=orange},
satellite/.style = {base=13mm, fill=#1, fill opacity=0.7},
satchild/.style = {base=12mm, fill=green!40, fill opacity=0.7},
]
% Planet
\node (P) [planet] {Interest \\ Areas};
% Satellits
\node [satellite=blue!30, right=-7mm of P] {DLTs/\\ Blockchain,\\ Web3};
\node [satellite=gray!30, above=-7mm of P] {Big/Fast Data\\ \& Streaming};
\node [satellite=yellow!30,left=-7mm of P] {Artificial\\ Intelligence};
\node (fp) [satellite=green,below=-7mm of P] {Functional\\ Programming};
% Satellits children
\node [satchild, below left=-4mm and 0mm of fp] {Unison};
\node [satchild, below right=-4mm and 0mm of fp] {ZIO,\\ Kyo};
\node [satchild, below=-4mm of fp] {Effect,\\ systems};
\end{tikzpicture}
\end{document}
質問から、画像に黒い背景が必要かどうかは不明です。必要であれば、\end{tikzpicture}
次のコード行を追加できます。
% Background, if you like to have it in black
\scoped[on background layer]
\draw[line width=6mm, fill] (current bounding box.south west) rectangle (current bounding box.north east);
答え2
最終的に、Chat-GPT の助けを借りて TikZ でそれを実現することができました。結果と参考用のコードは次のとおりです。
\documentclass[tikz,margin=2mm]{standalone}
\usetikzlibrary{shapes,positioning,calc}
\begin{document}
\begin{tikzpicture}
% Define styles for the nodes
\tikzstyle{planet}=[circle, fill=orange, minimum size=3.2cm, align=center]
\tikzstyle{satellite}=[circle, draw, fill=green!40, minimum size=1.3cm, align=center, opacity=0.7, font=\footnotesize, postaction={draw=white, line width=1.5pt, opacity=1}]
\tikzstyle{satchild}=[circle, draw, fill=green!25, minimum size=0.7cm, align=center, opacity=0.7, font=\footnotesize, postaction={draw=white, line width=1pt, opacity=1}]
% Draw the central planet
\node (interests) [planet] {Interest \\ Areas};
\node (bigdata) [satellite, above=-0.7cm of interests, fill=gray!30] {\textbf{Big/Fast Data} \\ \textbf{\& Streaming}};
\node (blockchain) [satellite, right=-0.7cm of interests, fill=blue!30] {\textbf{DLTs/} \\ \textbf{Blockchain,} \\ \textbf{Web3}};
\node (fp) [satellite, below=-0.7cm of interests] {\textbf{Functional} \\ \textbf{Programming}};
\node (ai) [satellite, left=-0.7cm of interests, fill=yellow!30] {\textbf{Artificial} \\ \textbf{Intelligence}};
% Sat. children
\node (unison) [satchild] at ($(fp) + (205:1.4cm)$) {Unison};
\node (unison) [satchild] at ($(fp) + (-25:1.4cm)$) {ZIO, Kyo};
\node (unison) [satchild, below=-4mm of fp] {Effect,\\ systems};
\end{tikzpicture}
\end{document}
答え3
code-noise
このChatGPTアプローチによって生成され、残された量を示すために、ここにいくつかのリファクタリングを示します。OPが解決策として投稿したコードの。
ご覧のとおり、残ったものは、some residual nastiness
選択したアプローチから明らかになります。つまり、読みやすさを向上させるために、さらにリファクタリングしたいのですが、ノード ステートメントは、どういうわけか、現状のままでは良い点と悪い点が同時に存在します。つまり、より多くの労力をかけずに、これらのステートメントを理解しやすく、きちんとフォーマットされたワンライナーのセットにすることは困難です。
また、下から上への方向になった元のスケッチはどうなったのか疑問に思いますleft-to-right orientation
。これは、投稿された GPT コードよりも、リファクタリング後のほうが簡単に変更できる可能性があります。
詳しくは調べませんでしたが、postaction
SAT や CSAT のスタイルで が本当に必要なのはなぜか疑問に思います。
As a rule of thumb
:
- コードの見た目や雰囲気が悪ければ、間違っているか変更が難しい可能性があります。
- コードがきちんと配置されている場合、コンパイル時に正しい可能性が高いです。
- これらはすべてエラーを防ぐための手順であり、状況の進展に応じて変更を促します。
ちなみにcode-noise
、例えば読みにくさは、逆順に作業すると少なくなります。
- 最初にノードなどを投稿する
- スタイルを次々と紹介する
- 私が今投稿するコードはより良くなりましたが、この観点からはまだ十分ではありません。
\documentclass[tikz,margin=2mm]{standalone}
\usetikzlibrary{positioning}
% ~~~ REFACTORING ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% --- removed unused node name ---
% --- removed bold font: not needed ----------
% --- replaced style-names for better read-ability & error prevention ----
% --- moved node names after the style statement (my convention) ---
% --- renamed node names: capitalized, shorter -----
% --- removed calc, replaced shift statements --------------
% --- removed shapes: obviously NOT needed ----------
% --- replaced 0.7cm by 7mm - grasp it at 1 glance w.o. thinking ---
% --- refactoring common styles CMN + removed not needed ones ---------
% --- same for opacity --------
% --- some, still insufficient, reformatting of code ---
\begin{document}
\begin{tikzpicture}
% Define styles for the nodes
\tikzstyle{CMN} = [circle, align=center]
\tikzstyle{OPC} = [opacity=0.7]
\tikzstyle{PAOPC} = [draw=white,opacity=1]
\tikzstyle{PLANET}= [CMN, fill=orange, minimum size=3.2cm]
\tikzstyle{SAT} = [CMN, OPC, fill=green!40, minimum size=1.3cm,
font=\footnotesize,
postaction={PAOPC, line width=1.5pt}]
\tikzstyle{CSAT} = [CMN, OPC, fill=green!25, minimum size=0.7cm,
font=\footnotesize,
postaction={PAOPC, line width=1pt}]
% Draw the central planet
\node [PLANET] (IA) {Interest\\Areas};
\node [SAT, above=-7mm of IA,
fill=gray!30] {Big/Fast Data\\\& Streaming};
\node [SAT, right=-7mm of IA,
fill=blue!30] {DLTs/\\Blockchain,\\Web3};
\node [SAT, below=-7mm of IA] (FP) {Functional\\Programming};
\node [SAT, left=-7mm of IA,
fill=yellow!30] {Artificial\\Intelligence};
% Sat. children
\node [CSAT] at ([shift=(205:1.4cm)] FP) {Unison};
\node [CSAT] at ([shift=(-25:1.4cm)] FP) {ZIO, Kyo};
\node [CSAT,
below=-4mm of FP] {Effect,\\systems};
\end{tikzpicture}
\end{document}