我怎样才能绘制 helio 图?

我怎样才能绘制 helio 图?

在此处输入图片描述

\documentclass{article}
\usepackage{datatool,tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}


\begin{filecontents}{ooo.dat}
m   ,   n
0   ,   Materialwirtschaft
15  ,   Produktionsplanung
30  ,   Finanz-und Rechnungswesen
45  ,   Controlling
60  ,   Personalwirtschaft
75  ,   Archiv
90  ,   Verkauf/ MarketingInforationsmanagement
105 ,   Stammdatenverwaltung
120 ,   Forschung und Entwicklung
135 ,   E-Business
150 ,   Produktionsplanung und Steurungssystem
165 ,   Travelmanagement
180 ,   Workflow Management 
195 ,   Customer Relationship Management
210 ,   Personalinformationssystem
225 ,   Wissensmanagement
240 ,   Projektmanagement
255 ,   Real Estate Management
270 ,   Mobile Computing
285 ,   Services Management/Support/Helpdesk
300 ,   Kontakt Management Vertiebsmanagement
315 ,   Asset Management
330 ,   Logistik
345 ,   Qualitätsmanagement




\end{filecontents}

\DTLloaddb[noheader=false]{coordinates}{ooo.dat}
\begin{document}

\begin{centering}


\begin{tikzpicture}[scale=4]


  \draw (0,0) circle (1.7cm);

  \node[draw, circle, inner sep=.2mm] (a) at (0,0) {};



\DTLforeach*{coordinates}{\m=m,\n=n}{
\draw(a) -- (\m:2cm) node[pos=1,sloped, right] {\n};




}

\fill[fill=white] (0,0) circle (1cm);
\draw[fill=white] (0,0) circle (1cm);

\node at (0,0) {Typische ERP-Funktionsbereiche};
\end{tikzpicture}
\end{centering}

\end{document}

答案1

如果问题是如何正确定位标签,那么您可以使用该包ifthen编写一个条件语句,从而根据角度位置产生不同的节点对齐(left或)。right

\documentclass{standalone}
\usepackage[utf8]{inputenc}% to insert missing `ä' spotted by @Thruston
\usepackage{datatool,tikz}
\usepackage{ifthen}

\begin{filecontents}{ooo.dat}
m   ,   n
0   ,   Materialwirtschaft
15  ,   Produktionsplanung
30  ,   Finanz-und Rechnungswesen
45  ,   Controlling
60  ,   Personalwirtschaft
75  ,   Archiv
90  ,   Verkauf/ MarketingInforationsmanagement
105 ,   Stammdatenverwaltung
120 ,   Forschung und Entwicklung
135 ,   E-Business
150 ,   Produktionsplanung und Steurungssystem
165 ,   Travelmanagement
180 ,   Workflow Management 
195 ,   Customer Relationship Management
210 ,   Personalinformationssystem
225 ,   Wissensmanagement
240 ,   Projektmanagement
255 ,   Real Estate Management
270 ,   Mobile Computing
285 ,   Services Management/Support/Helpdesk
300 ,   Kontakt Management Vertiebsmanagement
315 ,   Asset Management
330 ,   Logistik
345 ,   Qualitätsmanagement
\end{filecontents}

\DTLloaddb[noheader=false]{coordinates}{ooo.dat}

\begin{document}
\begin{tikzpicture}[scale=4]
  \draw (0,0) circle (1.7cm);
  \node[draw, circle, inner sep=.2mm] (a) at (0,0) {};

  \DTLforeach*{coordinates}{\m=m,\n=n}{
    \ifthenelse{\m>91 \AND \m<269}{%
      \draw(a) -- (\m:2cm) node[pos=1,sloped,left] {\n};
    }{%
      \draw(a) -- (\m:2cm) node[pos=1,sloped,right] {\n};
    }
  }

  \fill[fill=white] (0,0) circle (1cm);
  \draw[fill=white] (0,0) circle (1cm);
  \node at (0,0) {Typische ERP-Funktionsbereiche};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

无需额外的软件包,你可以right用替换anchor={(\m<=90||\m>=270)?180:0}。TikZ 知道如何处理数值状况。

\documentclass[border=1cm]{standalone}
\usepackage{fontspec,tikz,datatool} %to compile with [Xe|Lua]LaTeX

\begin{filecontents}{ooo.dat}
m   ,   n
0   ,   Materialwirtschaft
15  ,   Produktionsplanung
30  ,   Finanz-und Rechnungswesen
45  ,   Controlling
60  ,   Personalwirtschaft
75  ,   Archiv
90  ,   Verkauf/ MarketingInforationsmanagement
105 ,   Stammdatenverwaltung
120 ,   Forschung und Entwicklung
135 ,   E-Business
150 ,   Produktionsplanung und Steurungssystem
165 ,   Travelmanagement
180 ,   Workflow Management
195 ,   Customer Relationship Management
210 ,   Personalinformationssystem
225 ,   Wissensmanagement
240 ,   Projektmanagement
255 ,   Real Estate Management
270 ,   Mobile Computing
285 ,   Services Management/Support/Helpdesk
300 ,   Kontakt Management Vertiebsmanagement
315 ,   Asset Management
330 ,   Logistik
345 ,   Qualitätsmanagement
\end{filecontents}

\DTLloaddb[noheader=false]{coordinates}{ooo.dat}
\begin{document}
  \begin{tikzpicture}[scale=4]
    \draw (0,0) circle (1.7cm);
    \node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
    \DTLforeach*{coordinates}{\m=m,\n=n}{
      \draw(a) -- (\m:2cm) node[pos=1,sloped, anchor={(\m<=90||\m>=270)?180:0}] {\n};
    }
    \fill[fill=white] (0,0) circle (1cm);
    \draw[fill=white] (0,0) circle (1cm);
    \node at (0,0) {Typische ERP-Funktionsbereiche};
  \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容