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,正如你所说,它会导致一个错误。你能在回答中加上你的图的快照吗?