尝试使用填充美学绘制两个直方图时出现问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我一直试图通过使用填充美学和具有两个级别的特定列来绘制两个直方图。但是,我的代码不是显示两个所需的直方图,而是显示一个包含整个数据的直方图,另一个仅显示第二个分类。如果这是一个棘手的问题,我不知道我的语法是否存在问题。

    library(tidyverse)

    db1 <- data.frame(type=rep("A",100),val=rnorm(n=100,mean=50,sd=10))
    db2 <- data.frame(type=rep("B",150),val=rnorm(n=150,mean=50,sd=10))
    dbf <- bind_rows(db1,db2)

    P1 <- ggplot(db1, aes(x=val)) + geom_histogram()
    P2 <- ggplot(db2, aes(x=val)) + geom_histogram()
    PF <- ggplot(dbf, aes(x=val)) + geom_histogram()

我想得到这个,P1和P2

ggplot(db1, aes(x=val)) + geom_histogram(fill="red", alpha=0.5) + geom_histogram(data=db2, aes(x=val),fill="green", alpha=0.5)

我想要的是

但我认为应该使用的代码,P1和P2与列val的填充美学

ggplot(dbf, aes(x=val)) + geom_histogram(aes(fill=type), alpha=0.5)

我的代码

产生PF和P2的组合

ggplot(dbf, aes(x=val)) + geom_histogram(fill="red", alpha=0.5) + geom_histogram(data=db2, aes(x=val),fill="green", alpha=0.5)

我得到了什么

任何帮助或想法将受到高度赞赏!

提问于
用户回答回答于

您只需将position =“identity”传递给geom_histogram函数即可。

library(tidyverse)
library(ggplot2)

db1 <- data.frame(type=rep("A",100),val=rnorm(n=100,mean=50,sd=10))
db2 <- data.frame(type=rep("B",150),val=rnorm(n=150,mean=50,sd=10))
dbf <- bind_rows(db1,db2)

ggplot(dbf, aes(x=val, fill = type)) + geom_histogram(alpha=0.5, position = "identity")

用户回答回答于

您的目标是通过颜色组合显示重叠吗?我不确定如何强制geom_histogram显示重叠,但geom_density确实做你想要的。您可以使用带宽(bw)来显示更多或更少的细节。

dbf %>% ggplot() +
  aes(x = val, fill = type) +
  geom_density(alpha = .5, bw = .5) +
  scale_fill_manual(values = c("red","green"))

所属标签

可能回答问题的人

  • 天使的炫翼

    15 粉丝531 提问35 回答
  • 旺仔小小鹿

    社区 · 运营 (已认证)

    48 粉丝0 提问27 回答
  • 富有想象力的人

    2 粉丝0 提问26 回答
  • 发条丶魔灵1

    6 粉丝525 提问25 回答

扫码关注云+社区

领取腾讯云代金券