Ali*_*Ali 3 r scatter-plot ggplot2 pie-chart
我想创建一个散点图,其中每个点都是一个小饼图.例如,考虑以下数据:
foo <- data.frame(X=runif(30), Y=runif(30),A=runif(30),B=runif(30),C=runif(30))
Run Code Online (Sandbox Code Playgroud)
下面的代码将散点图,代表X和Y各点的值:
library(reshape2)
library(ggplot2)
foo.m <- melt(foo, id.vars=c("X","Y"))
ggplot(foo.m, aes(X,Y))+geom_point()
Run Code Online (Sandbox Code Playgroud)

以下代码将为每个点制作一个饼图:
p <- ggplot(foo.m, aes(variable,value,fill=variable)) + geom_bar(stat="identity")
p + coord_polar() + facet_wrap(~X+Y,,ncol=6) + theme_bw()
Run Code Online (Sandbox Code Playgroud)

但我希望合并它们:创建一个散点图,其中每个点都被饼图替换.这样我就可以在同一个图表中显示每条记录的所有5个值(X,Y,A,B,C).
无论如何要做到这一点?
这是你可以用package ggsubplot做的事情.不幸的是,根据发行#10 在这里,这个包不与R 3.1.1工作.如果我使用旧版本的R(3.0.3),我成功运行它.
使用您的长数据集,您可以在每个点上添加条形图X,Y如下所示:
library(ggplot2)
library(ggsubplot)
ggplot(foo.m) +
geom_subplot2d(aes(x = X, y = Y,
subplot = geom_bar(aes(variable, value, fill = variable), stat = "identity")),
width = rel(.5), ref = NULL)
Run Code Online (Sandbox Code Playgroud)

这给出了基本的想法,尽管还有许多其他选项(比如在绘图空间中存在重叠时控制子图移动到的位置).
这个答案提供了有关更新R版本的ggsubplot状态的更多信息.