首页 > 解决方案 > 如何在一张图中绘制 2 个直方图(不同的行长)(ggplot)

问题描述

我有 2 个直方图,我想将它们组合成一个图。不知何故,我无法将它们都加在一起。一个数据帧的长度为 1000,另一个数据帧的长度为 1000。

以下代码给了我一个错误:

Error: `mapping` must be created by `aes()`

我怎样才能将它们与传奇结合起来?

p <-ggplot(prediction_3)+
geom_histogram(aes(x=prediction_3), binwidth = 0.01)

p + geom_histogram(prediction_2b, aes(x=prediction),binwidth = 0.01, fill = "red", alpha = 0.7)+
geom_vline(xintercept=prediction_1)+
geom_text(aes(0.5,prediction_1,label = 0.469, vjust = 1))

各个直方图如下:

1000 个值: 在此处输入图像描述

10000 个值: 在此处输入图像描述

任何帮助将不胜感激。谢谢你

编辑:

prediction_2b$value <- 'prediction_2b' 
prediction_3$value <- 'prediction_3' 
combined_pred <- rbind(prediction_2b, prediction_3)

出现错误: Error in match.names(clabs, names(xi)) : names do not match previous names

标签: rggplot2

解决方案


怎么样,使用一些虚假数据,因为没有你的:

library(tidyverse)
# fake data
prediction_1 = 0.469

prediction_3 <- data.frame(prediction_3 = rnorm(1000, 4, 3))  
prediction_2b <- data.frame(prediction = rnorm(10000, 8, 3))

这里是分开的地块:

ggplot(prediction_3)+
  geom_histogram(aes(x=prediction_3), binwidth = 0.01)

ggplot(prediction_2b)+
  geom_histogram(aes(x=prediction), binwidth = 0.01)

要将它们绘制在一起,您可以在此处手动将它们以长格式融合:

dats <- rbind(data.frame(pred = prediction_3$prediction_3, var = 'prediction_3'),
              data.frame(pred = prediction_2b$pred, var = 'prediction_2b'))

# here the plot
ggplot(dats, aes(pred, fill = var)) + 
  geom_histogram(alpha = 0.5, position = "identity", bins = 75) +
  geom_vline(xintercept=prediction_1) 

在此处输入图像描述


推荐阅读