我想使用圆内的点来可视化比例。例如,假设我有 100 个点希望散布(有点随机抖动)在一个圆圈中。
接下来,我想用这张图来表示每个州在 2020 年美国总统大选中投票给拜登/哈里斯的人的比例。
示例 1 -- 密歇根
拜登获得了密歇根州 50.62% 的选票。我将绘制一个将圆分成两半的水平直径,然后将直径下的点涂成蓝色(民主党的颜色)。
示例 2 -- 怀俄明州
与密歇根州不同的是,在怀俄明州,拜登只获得了 26.55% 的选票,大约是选票的四分之一。在这种情况下,我会画一个水平弦来划分圆,这样弦下方的 磁盘 区域是整个磁盘区域的 25%。然后我会将那个区域的各个点涂成蓝色。因为我总共有 100 分,所以 25 分代表怀俄明州 25% 的人投票给拜登。
我的问题:我怎样才能用 ggplot
做到这一点?我研究了这个问题,这里有很多几何学。首先,我所说的那种区域叫做“circular segment”。其次,如果我们知道有关形状的其他一些参数(例如半径长度等),则有许多公式可以计算其面积。请参阅this不错的演示。
然而,我的目标不是解决几何问题,而只是以一种非常具体的方式表示比例:
- 画一个圆
- 在里面撒 X 个点
- 绘制一条(真实的或不可见的)水平线,根据给定的比例划分圆/圆盘区域
- 确保点是根据分割排列的。也就是说,如果我们想表示 30%-70% 的分割,那么在分割磁盘的线下有 30% 的点。
- 为线下的点着色。
我知道这有点奇特的可视化效果,但如果您对此提供任何帮助,我将不胜感激。
编辑
我发现了一个对 JavaScript package 的引用,它的作用与我的要求非常相似。