Blasen-/Satellitendiagramm mit Kindern

Blasen-/Satellitendiagramm mit Kindern

Ich habe den folgenden Code mit Latex- smartdiagramPaket, der das angehängte Blasendiagramm erzeugt.

Aber ich möchte in der Lage seinKindersatelliten habendarin (siehe Prototypbild unten).

  • Ist dies mit möglich smartdiagram? Wenn nicht, wie kann ich dies direkt mit tikzoder oder Ähnlichem replizieren?

Danke!

\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}

Was ich habe vs. was ich will

Was ich habe vs. was ich will

Was ich versucht habe

Ich habe versucht, den Satelliten Functional Programmingdurch ein neues Diagramm zu ersetzen, mit dem Ziel, dass der Satellit ein neuer Planet wird, damit er mehr Satelliten (die Kinder) haben kann. Aber das Ergebnis war ein Chaos. Ich meine:

\textbf{Functional} \\ \textbf{Programming}Zu \smartdiagram[bubble diagram]{ ... }

Antwort1

Neufassung der OP-Antwort, diesmal ohne Verwendung der Hilfe von Chat-GPT. Der resultierende Code ist kürzer und klarer:

\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}

Bildbeschreibung hier eingeben

Aus der Frage geht nicht hervor, ob das Bild einen eigenen schwarzen Hintergrund haben soll. Wenn ja, können Sie vorher \end{tikzpicture}die folgenden Codezeilen hinzufügen:

% 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);

Bildbeschreibung hier eingeben

Antwort2

Mithilfe von Chat-GPT habe ich es endlich mit TikZ geschafft. Hier ist das Ergebnis und der Code als Referenz:

Bildbeschreibung hier eingeben

\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}

Antwort3

Um die Menge an code-noisegenerierten und hinterlassenen Daten zu zeigen, die dieser ChatGPT-Ansatz erzeugt, hier einige Refactoringsdes Codes, den der OP als Lösung gepostet hat.

Wie Sie sehen, ist der Rest some residual nastinessvom gewählten Ansatz abhängig. Ich würde beispielsweise gerne weiter umgestalten, um die Lesbarkeit zu verbessern, aber die Knotenanweisungen sind irgendwie gleichzeitig gut und schlecht, so wie sie es jetzt sind. Ohne viel mehr Aufwand ist es also schwierig, diese Anweisungen in eine Reihe leicht verständlicher, sauber formatierter Einzeiler zu verwandeln.

Ich frage mich auch, was mit left-to-right orientationder ursprünglichen Skizze passiert ist, die eine Ausrichtung von unten nach oben hatte. Dies lässt sich nach dem Refactoring möglicherweise einfacher ändern als im geposteten GPT-Code.

Ich habe mich nicht näher damit befasst, frage mich aber, warum es postactionin den SAT- und CSAT-Stilen wirklich erforderlich ist.

As a rule of thumb:

  • Wenn der Code ein hässliches Erscheinungsbild hat, ist er möglicherweise falsch oder schwer zu ändern
  • wenn der Code ordentlich angeordnet ist, ist er wahrscheinlich korrekter, sollte er kompiliert werden
  • Dies alles sind Schritte zur Fehlervermeidung und zur Förderung von Änderungen im Laufe der Entwicklung.

Übrigens, code-noisez. B. die schlechte Lesbarkeit, ist geringer, wenn Sie rückwärts arbeiten:

  • Post-Knoten usw. zuerst
  • stelle einen Stil nach dem anderen vor
  • der Code, den ich jetzt poste, ist besser, aber aus dieser Perspektive immer noch nicht gut genug.
\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}

überarbeitetesErgebnis

verwandte Informationen