簡體   English   中英

一個繪圖中的兩個直方圖(ggplot)

[英]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_manualscale_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM