【发布时间】:2019-09-05 21:00:15
【问题描述】:
我正在尝试在不同位置制作一张带有多个饼图的地图。 我的问题是我在循环的不同迭代中添加每个饼图。饼图有一些共同但不同的标签,因此每个切片的颜色不应该总是相同的。有没有办法添加一个参数,指定每次出现每个标签时应该为切片使用哪种颜色??
在我的代码中,我试图绘制 10 个饼图(地图中的 10 个区域),总共有 16 个不同的标签值(我称之为单倍群)。在每次迭代中,我只保留一个区域的值来绘制它们,以便在每次迭代中重新开始颜色......
我想添加一些类似于我添加的parsection 的内容,但它不起作用...
我已经看到这可以用 ggplot2 中的scale_color_manual 来完成,但是我正在使用的函数不在包中,我认为我应该保留它...
df_all是一个数据框,其中包含需要在饼图中引入的所有信息。使用grepl,我在每次迭代中独立选择每个区域的信息,并且饼图切片应填充频率列。单倍群应该是标签。主要问题是,例如Haplogroup A 的颜色与 Haplogroup C 中的颜色相同(只是因为它们是每个区域的第一个,即使它们不一样)。数据框看起来像这样(但更大):
Region Haplogroup Frequency
1 Region1 A 3
2 Region1 B 1
3 Region2 A 1
4 Region2 D 1
5 Region2 E 1
6 Region3 C 2
7 Region3 B 7
8 Region3 E 2
9 Region4 D 2
coord 数据框包含两列(x 和 y),其中包含饼图应在地图中放置的坐标(每行对应于一个区域)。计数器是一种在每次迭代中选择与下一个区域对应的下一个坐标的方法。 coords 看起来或多或少是这样的:
x y
1.3 14.3
2.5 12.5
1.9 10.4
3.7 11.7
一般来说,我的代码是这样的:
for (i in unique(df_all$Region)){
counter=counter+1
d <- df_all[grepl(i, df_all$Region),]
print(d)
add.pie(z=d$Frequency, x=coord$x[counter], y=coord$y[counter], radius = 0.005,
labels = d$Haplogroup)
par(col = c("E1b1a7a" = "#A6CEE3", "E1b1a8"= "#428EBF", "R1b"= "#6CADA0",
"A" = "#7CC171", "E1a" = "#66AB4C", "A3b2" = "#B89B74", "B" = "#E25E57",
"B2" = "#EE6049", "B2a1" = "#F58242", "E" = "#F99F41", "E1b1" = "#ED8F47",
"E1b1a" = "#BD93AD", "J1e" = "#9572AB", "L" = "#B19894", "T" = "#E9D27A",
"E1b1a7*" = "#B15928"))
}```
Thanks in advance for the help!
【问题讨论】:
-
您能否编辑问题以包含
df_all和counter的最小版本以及add.pie的来源以使其可重现?
标签: r