문제

i ggplot2로 다음 히스토그램 밀도 플롯을 만들고 싶습니다."정상적인"방법 (기본 패키지)에서는 정말 쉽습니다 :

set.seed(46)
vector <- rnorm(500)  
breaks <- quantile(vector,seq(0,1,by=0.1))
labels = 1:(length(breaks)-1)
den = density(vector)
hist(df$vector,
     breaks=breaks,
     col=rainbow(length(breaks)),
     probability=TRUE)
lines(den)
.

여기에 이미지 설명

ggplot을 사용하여 지금까지 이에 도달했습니다 :

seg <- cut(vector,breaks,
           labels=labels,
           include.lowest = TRUE, right = TRUE)
df = data.frame(vector=vector,seg=seg)

ggplot(df) + 
     geom_histogram(breaks=breaks,
                    aes(x=vector,
                        y=..density..,
                        fill=seg)) + 
     geom_density(aes(x=vector,
                      y=..density..))
.

그러나 "Y"스케일에는 잘못된 차원이 있습니다.다음 실행은 "Y"스케일이 바로 가져옵니다.

 ggplot(df) + 
     geom_histogram(breaks=breaks,
                    aes(x=vector,
                    y=..density..,
                    fill=seg)) + 
     geom_density(aes(x=vector,
                      y=..density..))
.

나는 그것을 이해하지 못한다.y=..density..는 높이가되어야합니다.그래서 왜 지구상의 저울이 그것을 채우려고 할 때 수정됩니까?

색상이 필요합니다.단지 기본 GGPLOT 채우기 색상에 따라 각 블록의 틈과 각 블록의 색이 방향으로 설정되는 히스토그램을 원한다.

도움이 되었습니까?

해결책

수동으로 색상을 백분율 막대에 추가했습니다.이게 당신을 위해 작동하는지 확인하십시오.

library(ggplot2)

ggplot(df, aes(x=vector)) +   
   geom_histogram(breaks=breaks,aes(y=..density..),colour="black",fill=c("red","orange","yellow","lightgreen","green","darkgreen","blue","darkblue","purple","pink")) + 
   geom_density(aes(y=..density..)) +
   scale_x_continuous(breaks=c(-3,-2,-1,0,1,2,3)) +
   ylab("Density") + xlab("df$vector") + ggtitle("Histogram of df$vector") +
   theme_bw() + theme(plot.title=element_text(size=20),
                      axis.title.y=element_text(size = 16, vjust=+0.2),
                      axis.title.x=element_text(size = 16, vjust=-0.2),
                      axis.text.y=element_text(size = 14),
                      axis.text.x=element_text(size = 14),
                      panel.grid.major = element_blank(),
                      panel.grid.minor = element_blank())
.

여기에 이미지 설명

다른 팁

fill=seg는 그룹화를 생성합니다.당신은 실제로 seg의 각 값에 대해 다른 히스토그램을 얻고 있습니다.색상이 필요하지 않으면 다음을 사용할 수 있습니다 :

ggplot(df) + 
  geom_histogram(breaks=breaks,aes(x=vector,y=..density..), position="identity") + 
  geom_density(aes(x=vector,y=..density..))
.

여기에 이미지 설명

색상이 필요한 경우 GGPLOT2 외부의 밀도 값을 계산하는 것이 가장 쉽습니다.

y-axis 해석에 관한 혼란은 밀도가 계산보다는 밀도가 그려지는 것일 수 있습니다.따라서 y-axis의 값은 막대의 합이 1 과 동일한 총 샘플의 비율입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top