饼图中自定义切片字体样式

饼图中自定义切片字体样式

这个问题涉及以下内容邮政

请参见下面我根据 bordaigorl 的回答所实现的方案,它真的很棒。

[
pie chart,
slice type={Baunternehmen}{blu},
slice type={Vermietung}{rosso},
slice type={Sonstiges}{giallo},
slice type={Geschäftsführung}{blu},
slice type={Disposition}{rosso},
slice type={ausführender Bereich}{giallo},
slice type={Kundenbetreuung}{viola},
slice type={Materialversorgung}{verde},
pie values/.style={font={\small}},
scale=3
]

\pie[values of Sonstiges/.style={pos=1.1}]{2008}{69/Baunternehmen,28/Vermietung, 3/Sonstiges}
\pie[xshift=3cm]%
{2009}{32/Geschäftsführung/,29/Disposition, 18/ausführender Bereich, 15/Kundenbetreuung, 6/Materialversorgung}

\legend[shift={(0cm,-1cm)}]{{Baunternehmen/Baunternehmen}, {Vermietung}/Vermietung, {Sonstiges}/Sonstiges}
\legend[shift={(3cm,-1cm)}]{{Geschäftsführung}/Geschäftsführung, {Disposition}/Disposition, {ausführender Bereich}/ausführender Bereich,{Kundenbetreuung}/Kundenbetreuung,{Materialversorgung}/Materialversorgung}

\end{tikzpicture}

我在文档中使用自定义字体 (uarial)。因此,饼图标题和图例值采用 uarial 字体。切片值采用标准 latex 字体。

在此处输入图片描述

我如何在此处更改为 uarial 字体。因此,对于 tikzpicture 的标准实现,我使用

nodes near coords style={/pgf/number format/assume math mode},

同样的办法?但是具体在宏的哪里呢?

宏 \pie 和 \legend 以及所需的所有键定义如下:

\definecolor{rosso}{RGB}{220,57,18}
\definecolor{giallo}{RGB}{255,153,0}
\definecolor{blu}{RGB}{102,140,217}
\definecolor{verde}{RGB}{16,150,24}
\definecolor{viola}{RGB}{153,0,153}

\makeatletter

\tikzstyle{chart}=[
    legend label/.style={font={\scriptsize},anchor=west,align=left},
    legend box/.style={rectangle, draw, minimum size=5pt},
    axis/.style={black,semithick,->},
    axis label/.style={anchor=east,font={\tiny}},
]

\tikzstyle{bar chart}=[
    chart,
    bar width/.code={
        \pgfmathparse{##1/2}
        \global\let\bar@w\pgfmathresult
    },
    bar/.style={very thick, draw=white},
    bar label/.style={font={\bf\small},anchor=north},
    bar value/.style={font={\footnotesize}},
    bar width=.75,
]

\tikzstyle{pie chart}=[
    chart,
    slice/.style={line cap=round, line join=round, very thick,draw=white},
    pie title/.style={font={\bf}},
    slice type/.style 2 args={
        ##1/.style={fill=##2},
        values of ##1/.style={}
    }
]

\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}


\newcommand{\pie}[3][]{
    \begin{scope}[#1]
    \pgfmathsetmacro{\curA}{90}
    \pgfmathsetmacro{\r}{1}
    \def\c{(0,0)}
    \node[pie title] at (90:1.3) {#2};
    \foreach \v/\s in{#3}{
        \pgfmathsetmacro{\deltaA}{\v/100*360}
        \pgfmathsetmacro{\nextA}{\curA + \deltaA}
        \pgfmathsetmacro{\midA}{(\curA+\nextA)/2}

        \path[slice,\s] \c
            -- +(\curA:\r)
            arc (\curA:\nextA:\r)
            -- cycle;
        \pgfmathsetmacro{\d}{max((\deltaA * -(.5/50) + 1) , .5)}

        \begin{pgfonlayer}{foreground}
        \path \c -- node[pos=\d,pie values,values of \s]{$\v\%$} +(\midA:\r);
        \end{pgfonlayer}

        \global\let\curA\nextA
    }
    \end{scope}
}

\newcommand{\legend}[2][]{
    \begin{scope}[#1]
    \path
        \foreach \n/\s in {#2}
            {
                  ++(0,-10pt) node[\s,legend box] {} +(5pt,0) node[legend label] {\n}
            }
    ;
    \end{scope}
}

提前致谢。

答案1

\pie确实

\path \c -- node[pos=\d,pie values,values of \s]{$\v\%$} +(\midA:\r);

这意味着切片中的数字是在数学模式下设置的。您的字体设置可能不会改变数学字体,因此您会得到标准字体。

从节点文本中删除美元符号,改为以文本模式设置数字:

\path \c -- node[pos=\d,pie values,values of \s]{\v\%} +(\midA:\r);

相关内容