【问题标题】:Stacked bar chart with multiple facets具有多个方面的堆积条形图
【发布时间】:2017-08-21 14:22:45
【问题描述】:

我正在尝试使用以下代码绘制具有多个方面的堆积条形图:

dat <- read.csv(file="./fig1.csv", header=TRUE)
dat2 <- melt(dat, id.var = "id")
ggplot(dat2, aes(x=id, y=value, fill = variable))  +
geom_bar(stat="identity") +
facet_grid(. ~ col1) +
geom_col(position = position_stack(reverse = TRUE))

这是我的数据的最小化示例:

id col1 col2 col3 col4 col5
1   1   0.2  0.1  0.1  0.1 
2   1   0.2  0.1  0.2  0.1
3   1   0.2  0.2  0.2  0.1
4   2   0.1  0.1  0.2  0.1
5   2   0.1  0.1  0.1  0.2

但是,我不断收到以下错误。我认为问题来自facet_grid(. ~ col1),更具体地说是使用col1

Error in combine_vars(data, params$plot_env, cols, drop = params$drop) : 
At least one layer must contain all variables used for facetting

有人知道我该如何解决这个问题吗?

【问题讨论】:

  • 问题是col1 是数字,你正在和其他人一起融化它。您可以设置as.characterid1col1,然后将它们融合(这两列现在将是变量)。你可以这样做:dat$col1=as.character(dat$col1)dat$id=as.character(dat$id) ; dat2 &lt;- melt(dat)。然后是你的情节代码
  • 或者只是在熔化中包含col1作为变量:dat2 &lt;- melt(dat, id.var=c("id", "col1"))

标签: r ggplot2 bar-chart facet


【解决方案1】:

col1 不作为变量包含在melt 函数中,因此它将与其余列融合在一起。只需将col1 作为变量包含在melt 函数中即可。

dat2 <- melt(dat, id.var=c("id", "col1"))

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2020-09-24
    • 1970-01-01
    • 2021-10-07
    • 2018-04-15
    相关资源
    最近更新 更多