R 使用ggplot2表示散点图中每个点的小饼图

R 使用ggplot2表示散点图中每个点的小饼图,r,ggplot2,pie-chart,scatter-plot,R,Ggplot2,Pie Chart,Scatter Plot,我想创建一个散点图,其中每个点都是一个小饼图。例如,考虑以下数据: foo <- data.frame(X=runif(30), Y=runif(30),A=runif(30),B=runif(30),C=runif(30)) 下面的代码将为每个点制作一个饼图: library(reshape2) library(ggplot2) foo.m <- melt(foo, id.vars=c("X","Y")) ggplot(foo.m, aes(X,Y))+geom_point()

我想创建一个散点图,其中每个点都是一个小饼图。例如,考虑以下数据:

foo <- data.frame(X=runif(30), Y=runif(30),A=runif(30),B=runif(30),C=runif(30))

下面的代码将为每个点制作一个饼图:

library(reshape2)
library(ggplot2)
foo.m <- melt(foo, id.vars=c("X","Y"))
ggplot(foo.m, aes(X,Y))+geom_point()
p <- ggplot(foo.m, aes(variable,value,fill=variable)) + geom_bar(stat="identity")
p + coord_polar() + facet_wrap(~X+Y,,ncol=6) + theme_bw()

p这是使用packageggsubplot可以做的事情。不幸的是,根据问题10,这个包不能与R3.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)

这给出了基本的想法,尽管还有许多其他选项(如当绘图空间中存在重叠时,控制子绘图移动到哪里)


有关于更新R版本的ggsubplot状态的更多信息。

有一个软件包scatterpie,它正是您想要做的

library(ggplot2)
library(scatterpie)

ggplot() + 
  geom_scatterpie(aes(x=X, y=Y, r=0.1), data=foo.m, cols=c("A", "B", "C"))

在美学中,r是饼图的半径,可以根据需要进行调整。它取决于图形的比例-因为图形的范围是从0.0到1.0,所以半径1将占据整个图形(如果以0.5、0.5为中心)


请注意,虽然您将获得一个饼片颜色的图例,但据我所知,它不会在饼上标记饼片本身。

@hrbrmstr为什么?我提取了一些要点,X和Y来自主成分分析(PCA)。A、 B和C是每个记录的属性(实际上它们是6,而不是3)。在PCA图中显示它们有更好的方法吗?条形图>饼图。始终。@hrbrmstr饼图可以放在散点图上作为小圆圈,每个圆圈代表一个点。但是我们怎样才能把条形图放在散点图上呢?通过
变量
(你在馅饼中设置的
填充
)进行切面,并让点的大小(在每个切面中)成为每个馅饼的半径。谢谢。我有R3.1.1,正如你所说,它会导致一个错误。你能在回答中加上你的图的快照吗?