嗯,我一直在这个网站上寻找如何在一个图中制作两个直方图的方法。
ggplot()+geom_histogram(data=etapa1, aes(x=AverageTemperature),col="red")+
geom_histogram(data=etapa2, aes(x=AverageTemperature),col="blue")
我有两个不同颜色的直方图,但是我没有得到一个图例或标签来显示哪个颜色代表什么。我该如何制作它?
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)
对我来说,使用密度图似乎比直方图更明显,因为温度是实数。
希望这可以在某种程度上有所帮助......
如果您不想合并两个数据框,那就有点棘手了...... 您必须使用 scale_colour_manual
和 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"))
你可以分别使用geom_density()
和geom_histogram()
来替换它。
aes(y = ..count../sum(..count..))
添加到直方图中作为参数,但没有帮助。
我有两个数据集,行数差异很大,因此在频率图上显示它并不有用。 - AAAA使用 @TimoWagner 的例子:
set.seed(1001)
etapa1 <- data.frame(AverageTemperature = rnorm(100000, 16.9, 2))
etapa2 <- data.frame(AverageTemperature = rnorm(100000, 17.4, 2))
以下是另一种将这两个数据集打包在一起的方式:
combdat <- dplyr::bind_rows(list(dat1=etapa1,dat2=etapa2),
.id="dataset")
两个叠加的直方图:
library(ggplot2)
ggplot(combdat,aes(AverageTemperature,fill=dataset))+
scale_fill_manual(values=c("red","blue"))+
geom_histogram(alpha=0.5,binwidth=0.1,position="identity")
data.frames
并在两个数据集中添加一个额外的变量,例如etapa
,并将每个值设置为所需值(例如分别为1和2)。 然后在aes()
语句中使用fill = etapa
。 - Timo Wagner