我想要一个圆,其圆周用三种不同的颜色着色,类似于下面的但是是一条线并且只有三种颜色:
我最初尝试
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\draw [red] (0,0) arc [radius=1, start angle=0, end angle=120];
\draw [green] (1,0) arc [radius=1, start angle=120, end angle=240];
\draw [blue] (0,0) arc [radius=1, start angle=240, end angle=360];
\end{tikzpicture}
\end{document}
但这并不能给出正确的结果,并且函数的参数使得我很难实现我所想的结果。
答案1
问题在于,arc
从一个坐标(称之为 A)开始,到角度 X 结束,半径为 1 的点将假定 A 位于半径为 1 的圆周上的角度为 X 的点。
因此,您首先arc
假设(0,0)
位于半径为 1 的圆周上的零度。这意味着圆心必须位于(-1,0)
。
但是你的第二个arc
假设是(1,0)
位于半径为 1 的圆周上的 120 度。所以中心一定位于(1.5,{.5*(sqrt(3))}
。
最后,第三个arc
假设(0,0)
位于半径为 1 的圆周上的 240 度。所以中心一定位于({cos(60)},{sin(60)})
。
[难以置信的是,我在深夜这个时候没有搞乱几何图形。]
我建议改用极坐标。这样你的arc
s 就可以从 开始(0:1)
,(120:1)
这样(240:1)
事情就简单多了。
\documentclass[border=10pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw [red] (0:1) arc [radius=1, start angle=0, end angle=120];
\draw [green] (120:1) arc [radius=1, start angle=120, end angle=240];
\draw [blue] (240:1) arc [radius=1, start angle=240, end angle=360];
\end{tikzpicture}
\end{document}
答案2
我正在发布这段代码,它来自 Zarko 在相关问题上删除的回答(TikZ:具有颜色过渡的圆圈)。这不是我的代码,所以我把答案放在了社区维基上。
\documentclass[border=5mm,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[radius=32mm]
\foreach \i [count=\ii from 0] in {red, green, blue}
\fill[\i] (0,0) -- (\ii*120:32mm)
arc[start angle=\ii*120,delta angle=120]
-- cycle;
\fill[white] (0,0) circle (16mm);
\end{tikzpicture}
\end{document}
要添加各部分之间的空白,可以使用\fill[\i, draw=white, very thick]
。要使条形变细,请调整中间白色圆圈的大小。
答案3
编辑:
cfr 的评论让我更仔细地阅读了你的问题。
当然,如果你只需要一条线,你可以增加白色内圆的半径,例如:
\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\foreach \mycolor/\mygrad in {red/0,green/120,blue/240}
\tkzDrawSector[R,draw=white,fill=\mycolor](O,1)(\mygrad,\mygrad+120);
\fill[white] (0,0) circle (.95); % <--- here put the value you like
\end{tikzpicture}
\end{document}
原始答案:
您还可以使用tkz-euclide
包:
\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\foreach \mycolor/\mygrad in {red/0,green/120,blue/240}
\tkzDrawSector[R,draw=white,fill=\mycolor](O,1)(\mygrad,\mygrad+120);
\fill[white] (0,0) circle (.5);
\end{tikzpicture}
\end{document}