我有以下数据框(df1):
ggplot(data = df1, aes(x = Type, y = Age, color = Type)) +
geom_point() +
geom_count() +
facet_wrap(~Participant)
我试图使用ggplot2绘制此数据,其中Age位于y轴上,Type表示为x轴。
到目前为止,我能够做的是,以便对每种类型绘制点,并按照与该年龄段内该类型的计数成比例的大小进行映射。
我使用的代码:
max-height
我想要获得的内容是一个图表,其中每个点的大小与该年龄的计数总数中类型的计数成比例
例如,在3岁时,A为1/4,B为1/2,C为1/4。
我希望能够为每个参与者以及整体数据绘制图表。
答案 0 :(得分:2)
告诉我这是你的意思:
library(data.table)
df1 <- data.table(Participant = c("John", "John", "John", "John", "John", "Amy", "Amy", "Amy", "Amy"),
Age = c(5,3,3,3,4,5,3,4,4), Type = c("A", "B", "B", "C", "B", "A", "A", "C", "B"))
df1[, count_by_Age := .N, by = "Age"]
df1[, count_by_Age_Type := .N, by = c("Age", "Type")]
df1[, proportion := count_by_Age_Type/count_by_Age]
所以df1看起来像这样:
> df1
Participant Age Type count_by_Age count_by_Age_Type proportion
1: John 5 A 2 2 1.0000000
2: John 3 B 4 2 0.5000000
3: John 3 B 4 2 0.5000000
4: John 3 C 4 1 0.2500000
5: John 4 B 3 2 0.6666667
6: Amy 5 A 2 2 1.0000000
7: Amy 3 A 4 1 0.2500000
8: Amy 4 C 3 1 0.3333333
9: Amy 4 B 3 2 0.6666667
因此,如果我已正确理解您,proportion
列就是您希望size
中的ggplot
参数?
g <- ggplot()
g <- g + geom_point(data = df1, aes(x = Type, y = Age, colour = Type, size = proportion))
g <- g + facet_wrap(~Participant)
print(g)
怎么样?可能想要调整传奇......