2016-12-16 14 views
0

컷 :ggplot : 축 (로그)를 재조정 및 I는 R이 같은 매우 간단한 박스 플롯을 플롯 할 축선을

원하는 그래프

enter image description here

그것은 로그 링크 인 (감마 분포 : type of bee) 나는 alre을

내 스크립트를 jh_conc은 (그룹 범주 그룹 변수의 연속 종속 변수 (jh_conc)의 일반화 선형 모델) 호르몬 농도 변수 ADY은 한 :

> jh=read.csv("data_jh_titer.csv",header=T) 
> jh 
      group  jh_conc 
1   Queens 6.38542714 
2   Queens 11.22512563 
3   Queens 7.74472362 
4   Queens 11.56834171 
5   Queens 3.74020100 
6 Virgin Queens 0.06080402 
7 Virgin Queens 0.12663317 
8 Virgin Queens 0.08090452 
9 Virgin Queens 0.04422111 
10 Virgin Queens 0.14673367 
11  Workers 0.03417085 
12  Workers 0.02449749 
13  Workers 0.02927136 
14  Workers 0.01648241 
15  Workers 0.02150754 

fit1=glm(jh_conc~group,family=Gamma(link=log), data=jh) 

ggplot(fit, aes(group, jh_conc))+ 
     geom_boxplot(aes(fill=group))+ 
     coord_trans(y="log") 

결과 줄거리는 다음과 같습니다

enter image description here

내 질문은 : 무엇을 (기하) 확장 I는 y 축 분할 및 다른이를 재조정 할 수 있습니까? 또한 로그 변환 된 데이터에 대해 수행 된 사후 테스트를 기반으로 유의 수준 인 검은 선 (평균 : 로그 눈금으로 계산 된 후 다시 원래의 눈금으로 변환 됨)을 추가하는 방법 : ** : p < 0.01 , *** : p < 0.001?

답변

0

ggplot2에 깨진 숫자 축을 만들 수 없습니다. 이는 주로 표시되는 데이터/차이를 시각적으로 왜곡하고 오도 된 것으로 간주되기 때문입니다.

그러나 scale_log10() + annotation_logticks()을 사용하면 다양한 값의 데이터를 압축하거나 이분 산성 데이터를 더 잘 표시 할 수 있습니다. annotate을 사용하여 p 값 표현 별과 막대를 만들 수도 있습니다.

# make a zero intercept version for easy plotting 
fit2 <- glm(jh_conc ~ 0 + group, family = Gamma(link = log), data = jh) 
# extract relevant group means and use exp() to scale back 
means <- data.frame(group = gsub("group", "",names(fit2$coef)), means = exp(fit2$coef)) 

ggplot(fit, aes(group, jh_conc)) + 
    geom_boxplot(aes(fill=group)) + 
    # plot the circles from the model extraction (means) 
    geom_point(data = means, aes(y = means),size = 4, shape = 21, color = "black", fill = NA) + 
    # use this instead of coord_trans 
    scale_y_log10() + annotation_logticks(sides = "l") + 
    # use annotate "segment" to draw the horizontal lines 
    annotate("segment", x = 1, xend = 2, y = 15, yend = 15) + 
    # use annotate "text" to add your pvalue *'s 
    annotate("text", x = 1.5, y = 15.5, label = "**", size = 4) + 
    annotate("segment", x = 1, xend = 3, y = 20, yend = 20) + 
    annotate("text", x = 2, y = 20.5, label = "***", size = 4) + 
    annotate("segment", x = 2, xend = 3, y = .2, yend = .2) + 
    annotate("text", x = 2.5, y = .25, label = "**", size = 4) 

enter image description here

:

또한 쉽게이 이름의 속성을 사용하여 모델에서 정보를 잡을 수 있고, 여기에 우리는 약 fit$coef 신경