小编use*_*108的帖子

如何从data.frame制作googleVis多个Sankey?

目标

我的目标是使用googleVis包装在R中制作多个Sankey .输出应该类似于:

在此输入图像描述

数据

我在R中创建了一些虚拟数据:

set.seed(1)

source <- sample(c("North","South","East","West"),100,replace=T)
mid <- sample(c("North ","South ","East ","West "),100,replace=T)
destination <- sample(c("North","South","East","West"),100,replace=T) # N.B. It is important to have a space after the second set of destinations to avoid a cycle
dummy <- rep(1,100) # For aggregation

dat <- data.frame(source,mid,destination,dummy)
aggdat <- aggregate(dummy~source+mid+destination,dat,sum)
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的

如果我只有一个源和目的地,我可以构建一个有2个变量的Sankey,但不是中间点:

aggdat <- aggregate(dummy~source+destination,dat,sum)

library(googleVis)

p <- gvisSankey(aggdat,from="source",to="destination",weight="dummy")
plot(p)
Run Code Online (Sandbox Code Playgroud)

代码产生了这个:

在此输入图像描述

我该如何修改?

p <- gvisSankey(aggdat,from="source",to="destination",weight="dummy")
Run Code Online (Sandbox Code Playgroud)

接受mid变量呢?

r googlevis sankey-diagram

5
推荐指数
1
解决办法
1599
查看次数

当存在冗余级别时,如何在R的ggplot2中保持恒定宽度条形图?

考虑一些未发生级别的示例数据:

dat <- data.frame(sex = c("F","M","F"),
                  status = c("Pregnant","Not pregnant","Not pregnant"),
                  frequency = c(25,100,75))
Run Code Online (Sandbox Code Playgroud)

在样本数据中,男性不能怀孕,因此他们没有数据.

我想用绘制数据ggplot2R使用此代码:

library(ggplot2)

p <- ggplot(dat,aes(x=status,y=frequency,fill=sex))+
  geom_bar(stat = "identity",position="dodge")

print(p)
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

在此输入图像描述

正如您所看到的,女性和怀孕的酒吧比其他酒吧更宽.我的问题是如何抑制条形加宽以使条形宽度相同?

r ggplot2

4
推荐指数
2
解决办法
1052
查看次数

标签 统计

r ×2

ggplot2 ×1

googlevis ×1

sankey-diagram ×1