R语言中的直方图和密度图画法
原创 AI写代码的DNA AI写代码的DNA 2019-05-15
单一直方图 这是最简单的一种
a1 <- rnorm(400,20,3.5)
hist(a1, col = rgb(1,0,0,0.2))
2. 在直方图中添加密度分布曲线
hist(a1, col = rgb(1,0,0,0.2),freq = F)
lines(density(a1), col = "red")
3. 多个直方图
当我们添加第二个图的时候,不要忘记使用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")
4.在ggplot2中画直方图
.
5. 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")
6.不同分组的直方图 我们在数据中加入几个分组变量。
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')
(提示:代码块可左右滑动)
【欢迎转发分享,转载请注明出处】