【发布时间】:2013-02-01 13:51:40
【问题描述】:
我正在尝试构建一个显示从一个类到另一个类的转换的图。我想要根据类属性来表示每个类的大小,以及从一个类到另一个类的箭头,根据从一个类到另一个类的转换次数来调整大小。
举个例子:
library(ggplot2)
points <- data.frame( x=runif(10), y=runif(10),class=1:10, size=runif(10,min=1000,max=100000) )
trans <- data.frame( from=rep(1:10,times=10), to=rep(1:10,each=10), amount=runif(100)^3 )
trans <- merge( trans, points, by.x="from", by.y="class" )
trans <- merge( trans, points, by.x="to", by.y="class", suffixes=c(".to",".from") )
ggplot( points, aes( x=x, y=y ) ) + geom_point(aes(size=size),color="red") +
scale_size_continuous(range=c(4,20)) +
geom_segment( data=trans, aes( x=x.from, y=y.from, xend=x.to, yend=y.to, size=amount ),lineend="round",arrow=arrow(),alpha=0.5)
我希望能够以与圆圈不同的比例缩放箭头。理想情况下,我想要一个具有两个比例的图例,但我知道这可能是不可能的 (using two scale colour gradients on one ggplot)
有没有比对基础数据应用任意缩放更优雅的方法来做到这一点?
【问题讨论】:
-
抱歉,这不是一个真正的答案,但对于绘制网络,您可以查看专门的库,例如
igraph或network。 -
我同意其他库可能是要走的路。我只是希望我能在 ggplot 中做我需要做的事情。目前在箭头上使用 alpha 并在圆圈上使用大小可以,但它有点 hack
标签: r ggplot2 data-visualization