R图中的绘图交互

R图中的绘图交互,r,graph,ggplot2,lattice,interaction,R,Graph,Ggplot2,Lattice,Interaction,我有以下类型的数据(尽管数据点的数量非常大) 是否有可能用现有的R库或任何流行的图形软件制作这样的图形,或者需要更专业的软件 编辑: 这就是我使用气泡图所能做到的: p <- ggplot(propdata, aes(X,Y,size = diameter, label=name)) p <- p + geom_point(colour= "red")+geom_text(size=3) # colour = colr does not work p p因此,问题在于创建一个

我有以下类型的数据(尽管数据点的数量非常大)

是否有可能用现有的R库或任何流行的图形软件制作这样的图形,或者需要更专业的软件

编辑:

这就是我使用气泡图所能做到的:

 p <- ggplot(propdata, aes(X,Y,size = diameter, label=name))
p <- p + geom_point(colour= "red")+geom_text(size=3) # colour = colr does not work 
p

p因此,问题在于创建一个表示交互的线图

为此,您需要以适当的格式格式化数据。您需要绘制线段,为此,您需要在数据框中的单行中绘制每条线段的坐标:

interaction <- merge(propdata, relation, by.x="name", by.y="name1")
interaction <- cbind(interaction, 
               merge(propdata, relation, by.x="name", by.y="name2")[, c("X", "Y")])
names(interaction)[8:9] <- c("Xend", "Yend")
interaction

  name diameter X Y colr name2 score Xend Yend
1    A      4.3 1 1   10     B   1.1    2    3
2    A      4.3 1 1   10     C   2.2    3    3
3    A      4.3 1 1   10     D   5.4    3    3
4    B      8.3 2 3   20     C   3.1    4    4
5    B      8.3 2 3   20     D   2.0    4    4
最后,创建绘图:

ggplot() + 
  geom_polygon(data=circles, aes(group=name, x=x, y=y, fill=color)) +
  geom_text(data=propdata, aes(x=X, y=Y, label=name), hjust=0, vjust=0) +
  geom_segment(data=interaction, aes(x=X, y=Y, xend=Xend, yend=Yend, size=score)) + 
  scale_size("Inter", to=c(0, 5)) +
  coord_equal()

以下是我用
qgraph
快速制作的一些东西:

library("qgraph")

plot(1,type='n',xlim=c(min(propdata$X)-0.5,
    max(propdata$Y)+0.5),ylim=c(min(propdata$Y)-0.5,max(propdata$Y)+0.5),
    xlab="",ylab="")

col <- rgb(0,1-propdata$colr/max(propdata$colr),0)

qgraph(relation,plot=FALSE,rescale=FALSE,layout=as.matrix(propdata[c("X","Y")]),
        edge.color="darkred",color=col,propdata$colr,directed=FALSE,esize=10,
       vsize=propdata$diameter+2,lcolor="white",curve=c(0,0,-0.2,0,0))
库(“qgraph”)
绘图(1,type='n',xlim=c(最小值(propdata$X)-0.5,
最大值(propdata$Y)+0.5,ylim=c(最小值(propdata$Y)-0.5,最大值(propdata$Y)+0.5),
xlab=“”,ylab=“”)

答案是肯定的。你试过什么?我试过ggplot2没有意义..使用geom_point()只是框定了buble的大小,不知道如何连接…@Andrie看到我的编辑,我就这么做了,我试过了…谢谢。这比我最初想象的要难。答案发布和编辑。非常好…我唯一想把标签放在离圆心稍远的地方…谢谢你的答案…我们还可以控制线条大小,因为有时候会变得如此粗体,以至于信息丰富,但并不漂亮…谢谢你的答案…非常感谢你的答案…非常好!!我看了qgraph的网页…非常好…+1非常好。我的待办事项清单上要学习的新事物与日俱增。谢谢!如果节点的位置不重要,我会使用强制嵌入算法。此外,边缘的默认颜色效果更好,但它们是绿色:)
circle <- function(x, y, d, color, scale=1){
  d <- d * scale
  angle <- seq(-pi, pi, length = 50) 
  data.frame(
    x = x + d/2*sin(angle), 
    y = y + d/2*cos(angle),
    color=color)
}

circles <- ddply(propdata, .(name), 
                 function(x)with(x, circle(X, Y, diameter, colr, scale=0.2)))
ggplot() + 
  geom_polygon(data=circles, aes(group=name, x=x, y=y, fill=color)) +
  geom_text(data=propdata, aes(x=X, y=Y, label=name), hjust=0, vjust=0) +
  geom_segment(data=interaction, aes(x=X, y=Y, xend=Xend, yend=Yend, size=score)) + 
  scale_size("Inter", to=c(0, 5)) +
  coord_equal()
library("qgraph")

plot(1,type='n',xlim=c(min(propdata$X)-0.5,
    max(propdata$Y)+0.5),ylim=c(min(propdata$Y)-0.5,max(propdata$Y)+0.5),
    xlab="",ylab="")

col <- rgb(0,1-propdata$colr/max(propdata$colr),0)

qgraph(relation,plot=FALSE,rescale=FALSE,layout=as.matrix(propdata[c("X","Y")]),
        edge.color="darkred",color=col,propdata$colr,directed=FALSE,esize=10,
       vsize=propdata$diameter+2,lcolor="white",curve=c(0,0,-0.2,0,0))