美文网首页
直方图和密度图一起画法

直方图和密度图一起画法

作者: iBioinformatics | 来源:发表于2023-05-18 12:07 被阅读0次
  1. 单一直方图 这是最简单的一种
a1 <- rnorm(400,20,3.5)
hist(a1, col = rgb(1,0,0,0.2))
image.png
  1. 在直方图中添加密度分布曲线
hist(a1, col = rgb(1,0,0,0.2),freq = F)
lines(density(a1), col = "red")
image.png
  1. 多个直方图

当我们添加第二个图的时候,不要忘记使用add = T.

a1 <- rnorm(400,20,3.5)
a2 <- rnorm(400,29,2.5)

hist(a1, col = rgb(1,0,0,0.2), freq = F, xlim = c(10,40), ylim = c(0,0.2))
lines(density(a1),col = "red")
hist(a2, col = rgb(0,1,0,0.2), freq = F, add = T)
lines(density(a2),col = "green")
image.png
  1. 在ggplot2中画直方图
library(ggplot2)
df <- data.frame(a1 = rnorm(400,20,3.5), a2 = rnorm(400,29,2.5))
ggplot(data = df) + geom_histogram(aes(x=a1),fill = "red", alpha = 0.2) +
  geom_histogram(aes(x=a2),fill = "green", alpha = 0.2).
image.png
  1. ggplot2直方图中加入密度分布线
library(ggplot2)
df <- data.frame(a1 = rnorm(400,20,3.5), a2 = rnorm(400,29,2.5))
ggplot(data = df) + geom_histogram(aes(x = a1, y = ..density..),fill = "red", alpha = 0.2) +
  geom_density(aes(x= a1, y = ..density..), col = "red") +
  geom_histogram(aes(x=a2, y = ..density..),fill = "green", alpha = 0.2) + 
  geom_density(aes(x=a2, y = ..density..), col = "green")
image.png
  1. 不同分组的直方图 我们在数据中加入几个分组变量。
library(ggplot2)
library(tidyr)
male <- rnorm(400,20,3.5)
female <- rnorm(400,29,2.5)

df <- data.frame("Ocupation" = c(rep("doctor",200), rep("lawyer",200)),
                 "Education" = rep(c(rep("high",100),rep("low",100)),2),
                 male,female)

df1 <- gather(df, male,female, key = "Gender", value = "income")

ggplot(df1, aes(x = income)) + 
  geom_histogram(data = subset(df1, Gender == "male"), aes(y = ..density..,fill = "red", alpha = 0.3)) + 
  geom_density(data = subset(df1, Gender == "male"), aes(y = ..density..), col = "red") +
  geom_histogram(data = subset(df1, Gender == "female"),aes(y = ..density.., fill = "green", alpha = 0.3)) +
  geom_density(data = subset(df1, Gender == "female"), aes(y = ..density..), col = "green") +
  facet_grid(Ocupation ~ Education) +
  scale_fill_manual(name="Gender",values= alpha(c("green", "red"), 0.2),labels=c("male","female")) +   
  scale_alpha(guide = 'none')
image.png

相关文章

网友评论

      本文标题:直方图和密度图一起画法

      本文链接:https://www.haomeiwen.com/subject/fpctjdtx.html