[英]two histograms in one plot (ggplot)
好吧,我一直在這個站點上尋找在一個圖中繪制兩個直方圖的方法。 我去
ggplot()+geom_histogram(data=etapa1, aes(x=AverageTemperature),col="red")+
geom_histogram(data=etapa2, aes(x=AverageTemperature),col="blue")
我有兩個不同顏色的直方圖,但沒有顯示每個顏色的圖例或標簽。 我該如何生產?
正如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)
對我來說,使用密度圖而不是直方圖似乎更為明顯,因為溫度是實數。
希望這會有所幫助...
如果您不想將兩個data.frames組合在一起,則會更加棘手...您必須使用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()
分別。
使用@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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.