饼图中的翻转节点 - 更具体

饼图中的翻转节点 - 更具体

我只想翻转饼图中“Pecan”和“Peach”的节点。我提供的代码与我在另一篇文章中提供的代码相同。一个回复是将命令从

\path (O) -- node[rotate=220]{Pecan} (220:3);

\path (O) -- node[rotate=45]{Pecan} (220:3);.  

具体来说,更改rotate=220为会rotate=45翻转节点。为什么rotate=45有效?rotate=50rotate=67rotate=-12也有效吗?另一位成员建议只使用slopedsloped, allow upside down,其中一个会给我想要的显示。对吗?

\documentclass{amsart}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

\coordinate (O) at (0,0);
\draw (O) circle (3);
\draw (O) -- (0:3);
\draw (O) -- (120:3);
\draw (O) -- (210:3);
\draw (O) -- (230:3);
\draw (O) -- (270:3);
\draw (O) -- (310:3);

\path (O) -- node{Vanilla} (60:3);
\path (O) -- node{Chocolate} (165:3);
\path (O) -- node[rotate=220]{Pecan} (220:3);
\path (O) -- node[rotate=250]{Peach} (250:3);
\path (O) -- node{Mint} (290:3);
\path (O) -- node[rotate=335]{Strawberry} (335:3);
\end{tikzpicture}

\end{document}

答案1

为什么 rotate=45 有效? rotate=50、rotate=67 和 rotate=-12 也能有效吗?

让我们从单词(即节点)围绕中心旋转的前提开始,中心是默认锚点。因此,除非您指定不同的锚点,否则它们将“旋转”。默认角度为 0,即从左到右的一条直线。

正角度将旋转单词逆时针, 像这样:

逆时针

而负角度会旋转它顺时针, 像这样:

顺时针

因此在下面的代码中我将使用逆时针运动(使用正值更容​​易)。

另一位成员建议只使用倾斜或倾斜,允许倒置,其中一个就可以给我想要的显示效果。对吗?

sloped基本上是节点沿对角线path(或draw)的属性,遵循其倾斜度。如果不添加此选项,节点将以水平方式排版(无论路径的倾斜度如何)。allow upside down在这种情况下,不鼓励这样做,因为单词会出现……颠倒(阅读起来不太舒服)。

但是,您可以使用 foreach 命令创建饼图,这可以大大简化和减少代码。我仅针对此示例将 documentclass 更改为standalone并添加了包amsmath,但它也应该可以正常工作\documentclass{amsart}(已测试)。如果您有任何疑问,请在下面提问:

输出

在此处输入图片描述

代码

\documentclass[margin=10pt]{standalone}
\usepackage{amsmath}
\usepackage{tikz}

\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}

\coordinate (O) at (0,0);
\draw (O) circle (3);

\foreach \angle/\taste [remember=\angle as \lasta (initially 0)] in {
    120/Vanilla,
    210/Chocolate,
    230/Pecan,
    270/Peach,
    310/Mint,
    360/Strawberry}
{
        \coordinate (\angle) at (\angle:3);
        \draw (O) -- (\angle);
        \path (O) -- node[sloped]{\taste} ({(\lasta+\angle)/2}:3);
}
\end{tikzpicture}
\end{document}

基本上,只要您看到\something,它就是一个变量。由于 是\foreach一个循环,因此每次\angle\taste都会改变。它们会一起改变(它们在该列表中是耦合的)。

它的作用如下:

  1. 对于该列表中的每个当前角度(称为\angle),创建一个由角度本身调用的坐标,定位在角度和距离处。

     \coordinate (\angle) at (\angle:3);
    

    另外,记住最后一个角度为\lasta

  2. O然后从到 上面定义的坐标绘制一条路径\angle。这将绘制到我在列表中指定的每个角度的线(换句话说,就是饼图切片)。

  3. 最后,创建一条从 到 的路径(除非您另行指定,否则路径是不可见的),该路径位于 到 的最后一个角度( )和当前角度( )O的平均值之间。平均值是通过 计算的,因此例如在第一个循环(从 0 开始)中,它将变为 ,因此。事实上,是 60 度。\lasta\angle({(\lasta+\angle)/2}:3)({(\0+120)/2}:3)(60:3)Vanilla

相关内容