4

I'm trying to use this sunburst [link] for a scientific paper. In particular, I would like to add some references inside external boxes. I successfully updated the code, however, the links are kind of missing the correct position. As you can see in the following picture, the links do not follow the curvature.

enter image description here

Here the Latex file:

\documentclass{article}
\usepackage[utf8]{inputenc}

\title{Sunburst with References} \date{}

%%% IMPORT \usepackage{hyperref} % hyperlinks \usepackage{url} % simple URL typesetting \usepackage{graphicx}

\usepackage{xcolor} \definecolor{orange1}{HTML}{F1753A} \definecolor{orange2}{HTML}{F7A13E} \definecolor{orange3}{HTML}{FC6300} \definecolor{root}{HTML}{B2B2B2} \usepackage{tikz} \usepackage{pgfmath} \usetikzlibrary{decorations.text, arrows.meta,calc,shadows.blur,shadings} \renewcommand*\familydefault{\sfdefault} % Set font to serif family

% arctext from Andrew code with modifications: %Variables: 1: ID, 2:Style 3:box height 4: Radious 5:start-angl 6:end-angl 7:text {format along path}

\def\arctext[#1][#2]#3(#5)(#6)#7{ \draw[ color=white, thick, line width=1.3pt, fill=#2 ] (#5:#4cm+#3) coordinate (above #1) arc (#5:#6:#4cm+#3) -- (#6:#4) coordinate (right #1) -- (#6:#4cm-#3) coordinate (below right #1) arc (#6:#5:#4cm-#3) coordinate (below #1) -- (#5:#4) coordinate (left #1) -- cycle; \def\a#1{#4cm+#3} \def\b#1{#4cm-#3} \path[ decoration={ raise = -0.5ex, % Controls relavite text height position. text along path, text = {#7}, text align = center,
}, decorate ] (#5:#4) arc (#5:#6:#4); }

\def\arcbase[#1][#2]#3(#5)(#6)#7{ \draw[ color=#2, thin, line width=1.3pt, % fill=black ] (#5:#4cm+#3) coordinate (above #1) arc (#5:#6:#4cm+#3) -- (#6:#4) coordinate (right #1) -- (#6:#4cm-#3) coordinate (below right #1) arc (#6:#5:#4cm-#3) coordinate (below #1) -- (#5:#4) coordinate (left #1) -- cycle; \def\a#1{#4cm+#3} \def\b#1{#4cm-#3} \path[ decoration={ raise = -0.5ex, % Controls relavite text height position. text along path, text = {#7}, text align = center,
}, decorate ] (#5:#4) arc (#5:#6:#4); }

%arcarrow, this is mine, for beerware purpose... %Function: Draw an arrow from arctex coordinate specific nodes to another %Arrow start at the start of arctext box and could be shifted to change the position %to avoid go over another box. %Var: 1:Start coordinate 2:End coordinate 3:angle to shift from acrtext box
\def\arcarrow#1(#3)[#4]{ \draw[thick,-,>=latex,color=#1,line width=1pt,shorten >=-0pt, shorten <=-0pt] let \p1 = (#2), \p2 = (#3), % To access cartesian coordinates x, and y. \n1 = {veclen(\x1,\y1)}, % Distance from the origin \n2 = {veclen(\x2,\y2)}, % Distance from the origin \n3 = {atan2(\y1,\x1)} % Angle where acrtext starts. in (\n3-#4: \n1) -- (\n3-#4: \n2); % Draw the arrow. } %%%========================================================================

\begin{document}

\maketitle

\section{Chart}

\begin{tikzpicture}[ % Environment Cfg font=\sf \scriptsize, % Styles myarrow/.style={ thick, -latex, }, Center/.style ={ circle, fill=white, text=root, align=center, font =\footnotesize, inner sep=1pt,
}, ]

% Drawing the center
\node[Center](ROOT) at (0,0) {Root \\ Node};

% Drawing the Tex Arcs

% \Arctext[ID][box-style][box-height](radious)(start-angl)(end-angl){|text-styles| Text}
% Node 1:   
\arctext[N1][orange1][15pt](1.5)(200)(90){|\footnotesize\bf\color{white}| Node 1};
    %Sub 1:
    \arctext[N1S1][orange1][13pt](2.5)(120)(90){|\footnotesize\bf\color{white}| Sub1};
        \arctext[N1S1S1][orange1][8pt](3.25)(120)(90){|\footnotesize\bf\color{white}| Sub1-Sub1};
    %Sub 2:
    \arctext[N1S2][orange1][13pt](2.5)(160)(120){|\footnotesize\bf\color{white}| Sub2};
        \arctext[N1S2S1][orange1][8pt](4)(170)(140){|\footnotesize\bf\color{white}| Sub2-Sub1};
        \arctext[N1S2S2][orange1][8pt](4)(140)(110){|\footnotesize\bf\color{white}| Sub2-Sub2};
    %Sub 3:         
    \arctext[N1S3][orange1][13pt](2.5)(200)(160){|\footnotesize\bf\color{white}| Sub3};

%Node 2:
\arctext[N2][orange2][15pt](1.5)(-90)(90){|\footnotesize\bf\color{white}| Node 2};
    %Sub 1:
    \arctext[N2S1][orange2][13pt](2.5)(90)(50){|\footnotesize\bf\color{white}| Sub 1};
        \arctext[N2S1S1][orange2][8pt](3.25)(90)(60){|\footnotesize\bf\color{white}| Sub3-Sub1};
        \arcbase[N2S1S2][orange2][8pt](3.9)(80)(50){|\tiny| {\cite{einstein,dirac,knuth-fa,knuthwebsite}}};
    %Sub 2:
    \arctext[N2S2][orange2][13pt](2.5)(50)(20){|\footnotesize\bf\color{white}| Sub 2};
        \arctext[N2S2S1][orange2][6pt](4.5)(40)(15){|\scriptsize\bf\color{white}| Sub3-Sub1};
        \arctext[N2S2S2][orange2][6pt](4.5)(60)(40){|\scriptsize\bf\color{white}| Sub3-Sub2};
    %Sub 3:
    \arctext[N2S3][orange2][13pt](2.5)(-40)(20){|\footnotesize\bf\color{white}| Sub 3};
        \arctext[N2S3S1][orange2][8pt](3.25)(20)(-10){|\footnotesize\bf\color{white}| Sub3-Sub1};
        \arctext[N2S3S2][orange2][8pt](3.25)(-40)(-10){|\footnotesize\bf\color{white}| Sub3-Sub2};
    %Sub 4: 
    \arctext[N2S4][orange2][13pt](2.5)(-90)(-40){|\footnotesize\bf\color{white}| Sub 4};

%Node 3:    
\arctext[N3][orange3][15pt](1.5)(200)(270){|\footnotesize\bf\color{white}| Node 3};
    \arctext[N3S1][orange3][13pt](2.5)(200)(235){|\footnotesize\bf\color{white}| Sub 1};
    \arctext[N3S2][orange3][13pt](2.5)(235)(270){|\footnotesize\bf\color{white}| Sub 2};
        \arctext[N3S2S1][orange3][8pt](4)(250)(270){|\scriptsize\bf\color{white}| Sub2-Sub1};
        \arctext[N3S2S2][orange3][8pt](4)(230)(250){|\scriptsize\bf\color{white}| Sub2-Sub2};

%Drawing the Arrows
%\arcarrow(above/below ID)(abobe/below ID)[shift]
\arcarrow[orange1](below N1S2S2)(above N1S2)[10];
\arcarrow[orange1](below N1S2S1)(above N1S2)[17];

\arcarrow[orange2](below N2S2S1)(above N2S2)[10];
\arcarrow[orange2](below N2S2S2)(above N2S2)[15];
\arcarrow[orange2](below N2S1S2)(above N2S2)[25];

\arcarrow[orange3](below N3S2S1)(above N3S2)[-10];
\arcarrow[orange3](below N3S2S2)(above N3S2)[-10];
\end{tikzpicture}

% \begin{thebibliography}{2}

% \end{thebibliography} \clearpage \bibliographystyle{unsrt}
\bibliography{bib} %%% Remove comment to use the external .bib file (using bibtex). \end{document}

Luca
  • 143

1 Answers1

3

The wheelchart package, which I wrote, can be used.

This is based on an example from the package documentation.

The gaps between the arcs are obtained with the keys gap and gap radius.

The colors are stored in the list \WCcolors.

The text is given by the second variable \WCvarB and is given to the key arc data. The direction of this text depends on the angle of the middle of the arc given by \WCmidangle which is used in the key arc data dir. This text is centered in the arc with arc data pos=0.5.

The keys fill and overlay for a slice are set in the key slices style. If the text given by \WCvarB is empty then the color is none and overlay is true. Otherwise, overlay is false and the color depends on the angle \WCmidangle.

enter image description here

\documentclass[a4paper]{article}
\usepackage{etoolbox}
\usepackage{listofitems}
\usepackage{wheelchart}
\usetikzlibrary{decorations.text}
\usepackage{hyperref}
\begin{document}
\begin{tikzpicture}
\sffamily
\readlist\WCcolors{orange!50,orange!75,orange}
\pgfkeys{
  /wheelchart,
  arc data=\WCvarB,
  arc data dir={\WCmidangle<180?-1:1},
  arc data pos=0.5,
  arc data style={text color=white},
  counterclockwise,
  data=,
  gap,
  gap radius,
  slices style={
    /utils/exec={
      \ifdefempty{\WCvarB}{
        \def\WCcolor{none}
        \def\WCoverlay{true}
      }{
        \edef\WCcolor{\WCcolors[\fpeval{\WCmidangle<90?1:(\WCmidangle<210?2:(\WCmidangle<270?3:1))}]}
        \def\WCoverlay{false}
      }
    },
    fill=\WCcolor,
    overlay=\WCoverlay
  }
}
\wheelchart[
  middle=Root\\Node,
  middle style=darkgray,
  radius={1}{2}
]{%
  2/Node 1,
  1/Node 2,
  3/Node 3%
}
\wheelchart[
  radius={2}{3}
]{%
  4/Sub1,
  4/Sub2,
  4/Sub3,
  3/Sub1,
  3/Sub2,
  6/Sub1,
  6/Sub2,
  3/Sub3,
  3/Sub4%
}
\wheelchart[
  radius={3}{4}
]{%
  4/Sub1-Sub1,
  20/,
  3/Sub2-Sub1,
  3/{{\cite{test1}},{\cite{test2}},{\cite{test3}}},
  6/%
}
\end{tikzpicture}
\begin{thebibliography}{9}
\bibitem{test1}
\emph{Test 1},
2023.
\bibitem{test2}
\emph{Test 2},
2023.
\bibitem{test3}
\emph{Test 3},
2023.
\end{thebibliography}
\end{document}
matexmatics
  • 4,819