ggplot2에서 여러 / 겹치는 히스토그램을 그리는 데 몇 줄만 필요하지만 결과가 항상 만족스러운 것은 아닙니다. 가 존재해야 적절한 테두리 사용 착색 할 수있는 눈을 위해 히스토그램 구별 .
다음 함수는 경계 색상, 불투명도 및 중첩 밀도 플롯의 균형을 조정 하여 뷰어가 분포 를 구분할 수 있도록합니다 .
단일 히스토그램 :
plot_histogram <- function(df, feature) {
plt <- ggplot(df, aes(x=eval(parse(text=feature)))) +
geom_histogram(aes(y = ..density..), alpha=0.7, fill="#33AADE", color="black") +
geom_density(alpha=0.3, fill="red") +
geom_vline(aes(xintercept=mean(eval(parse(text=feature)))), color="black", linetype="dashed", size=1) +
labs(x=feature, y = "Density")
print(plt)
}
다중 히스토그램 :
plot_multi_histogram <- function(df, feature, label_column) {
plt <- ggplot(df, aes(x=eval(parse(text=feature)), fill=eval(parse(text=label_column)))) +
geom_histogram(alpha=0.7, position="identity", aes(y = ..density..), color="black") +
geom_density(alpha=0.7) +
geom_vline(aes(xintercept=mean(eval(parse(text=feature)))), color="black", linetype="dashed", size=1) +
labs(x=feature, y = "Density")
plt + guides(fill=guide_legend(title=label_column))
}
사용법 :
원하는 인수와 함께 데이터 프레임을 위의 함수에 전달하기 만하면 됩니다 .
plot_histogram(iris, 'Sepal.Width')
plot_multi_histogram(iris, 'Sepal.Width', 'Species')
plot_multi_histogram 의 추가 매개 변수 는 범주 레이블을 포함하는 열의 이름입니다.
우리는 다음과 같은 데이터 프레임을 생성함으로써 이것을 더 극적으로 볼 수 있습니다. 다양한 배포 수단을 사용 .
a <-data.frame(n=rnorm(1000, mean = 1), category=rep('A', 1000))
b <-data.frame(n=rnorm(1000, mean = 2), category=rep('B', 1000))
c <-data.frame(n=rnorm(1000, mean = 3), category=rep('C', 1000))
d <-data.frame(n=rnorm(1000, mean = 4), category=rep('D', 1000))
e <-data.frame(n=rnorm(1000, mean = 5), category=rep('E', 1000))
f <-data.frame(n=rnorm(1000, mean = 6), category=rep('F', 1000))
many_distros <- do.call('rbind', list(a,b,c,d,e,f))
이전과 같이 데이터 프레임 전달 (및 옵션을 사용하여 차트 확대) :
options(repr.plot.width = 20, repr.plot.height = 8)
plot_multi_histogram(many_distros, 'n', 'category')