一个图中的两个直方图(ggplot)

Sku*_*mon 2 r colors histogram ggplot2

嗯,我一直在这个网站上寻找在一个图中制作两个直方图。我得到

ggplot()+geom_histogram(data=etapa1, aes(x=AverageTemperature),col="red")+
geom_histogram(data=etapa2, aes(x=AverageTemperature),col="blue")
Run Code Online (Sandbox Code Playgroud)

我有两个不同颜色的直方图,但我没有得到显示每种颜色的图例或标签。我怎样才能生产它?

Tim*_*ner 10

正如Spacedman所说,如果你能更详细地说明你的问题并给出一个示例数据集会更好。

所以我创建了一个随机样本集来模拟温度。

etapa1 <- data.frame(AverageTemperature = rnorm(100000, 16.9, 2))
etapa2 <- data.frame(AverageTemperature = rnorm(100000, 17.4, 2))

#Now, combine your two dataframes into one.  First make a new column in each.
etapa1$e <- 'etapa1'
etapa2$e <- 'etapa2'

# combine the two data frames etapa1 and etapa2
combo <- rbind(etapa1, etapa2)

ggplot(combo, aes(AverageTemperature, fill = e)) + geom_density(alpha = 0.2)
Run Code Online (Sandbox Code Playgroud)

对我来说,使用密度图而不是直方图似乎更明显,因为温度是实数。

希望这会有所帮助......

如果您不想将两个 data.frames 组合起来,那就有点棘手了...您必须使用scale_colour_manualand scale_fill_manual。然后为语句定义一个变量fill。这可以在标签部分链接

ggplot() + 
  geom_density(data = etapa1, aes(x = AverageTemperature, fill = "r"), alpha = 0.3) +
  geom_density(data = etapa2, aes(x = AverageTemperature, fill = "b"), alpha = 0.3) +
  scale_colour_manual(name ="etapa", values = c("r" = "red", "b" = "blue"), labels=c("b" = "blue values", "r" = "red values")) +
  scale_fill_manual(name ="etapa", values = c("r" = "red", "b" = "blue"), labels=c("b" = "blue values", "r" = "red values"))
Run Code Online (Sandbox Code Playgroud)

您可以替换geom_density()geom_histogram()分别。