2017-05-12 11 views
3

ggplot에 아래 차트를 작성하려고했습니다. y 레이블에 1에서 50까지의 전체 값 집합을 표시하고 싶었지만 10 개의 숫자마다 수평 눈금 선만 생성하려고했습니다. 나는 minor_breaks을 추가 한 다음 테마를 제어하는 ​​것이 효과가 있다고 생각했습니다. 그러나 주요 그리드 선을 element_blank으로 설정하면 보조 눈금 선을 재정의하는 것처럼 보입니다. 사람들이 레이블보다 눈금 선을 추가하는 것에 대해 묻는 질문을 여기에서 발견했지만 그 반대가 필요합니다.마이너 브레이크에만 그리드 라인 추가 (ggplot)

어떻게 눈금 선의 수를 나누기 수보다 작게 설정할 수 있습니까? 감사! 여기

enter image description here

플롯에 대한 코드입니다 :

library(nsRFA) 
library(ggplot2) 
library(dplyr) 

data(hydroSIMN) 
annualflows %>% ggplot(aes(x = anno, y = cod)) + 
    geom_point(
     shape = 45, 
     size = 5, 
     col = "blue" 
    ) + 
    scale_y_reverse(
     breaks = 1:50, 
     labels = 1:50, 
     minor_breaks = seq(10, 50, by = 10) 
    ) + 
    scale_x_continuous(breaks = seq(1920, 1980, by = 10)) + 
    labs(
     x = "Year", 
     y = "Code" 
    ) + 
    theme(
     panel.background = element_blank(), 
     panel.border = element_rect(fill = NA), 
     text = element_text(size = 10), 
     panel.grid.major.x = element_line(color = "grey80"), 
     panel.grid.major.y = element_blank(), 
     panel.grid.minor.y = element_line(color = "grey80") # This doesn't work 

    ) 

답변

2

https://github.com/tidyverse/ggplot2/issues/403을 읽을 경우, 거기에 몇 가지 문제가 minor_breaks를 둘러싸고있는 것으로 생각된다. 그러나 geom_hline()을 사용하면 원하는 것을 얻을 수 있습니다.

library(nsRFA) 
library(ggplot2) 
library(dplyr) 


data(hydroSIMN) 

minors<-seq(10,50,by=10) 

annualflows %>% ggplot(aes(x = anno, y = cod)) + 
    geom_point(
    shape = 45, 
    size = 5, 
    col = "blue" 
) + 
    scale_y_reverse(
    breaks = 1:50, 
    labels = 1:50, 
    minor_breaks = seq(10, 50, by = 10) 
) + 
    scale_x_continuous(breaks = seq(1920, 1980, by = 10)) + 
    labs(
    x = "Year", 
    y = "Code" 
) + 
    theme(
    panel.background = element_blank(), 
    panel.border = element_rect(fill = NA), 
    text = element_text(size = 10), 
    panel.grid.major.x = element_line(color = "grey80"), 
    #panel.grid.major.y = element_blank(), 
    #panel.grid.minor.y = element_line(color = "grey80") # This doesn't work 
)+ 
    geom_hline(mapping=NULL, yintercept=minors,colour='grey80') 

enter image description here