仅向次要中断添加网格线(ggplot)

Sra*_*ffa 5 r gridlines ggplot2

我试图在ggplot. 我希望 y 标签显示从 1 到 50 的整个值集,但我只想每 10 个数字生成水平网格线。我认为添加minor_breaks然后控制主题会起作用。但是,将主要网格线设置为element_blank似乎也覆盖了次要网格线。我在这里发现了一些问题,人们询问添加比标签更多的网格线,但我想要相反的。

如何将网格线的数量设置为小于中断的数量?谢谢!

在此处输入图片说明

这是情节的代码:

 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

    )
Run Code Online (Sandbox Code Playgroud)

J.C*_*Con 5

从阅读这个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')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明