首页 > 解决方案 > 有没有办法可以使用 RStudio 将日志网格线添加到我的图表中?

问题描述

我目前正在尝试使用 Rstudio创建剂量反应曲线tidydrc,并且正在使用该软件包。我想知道是否有一种方法可以添加次要网格线,因为x-axisis log.

这是我到目前为止所拥有的图像

在此处输入图像描述

这是我到目前为止的代码:

tidydrc_plot(Nifedipinedrc,ed50=FALSE)  + 
  scale_x_log10() + 
  geom_errorbar(aes(ymin=g$Nifedipine-g$SD, ymax=g$Nifedipine+g$SD, x=Nifedipinedrc[[1]][[1]]$d, y=Nifedipinedrc[[1]][[1]]$r)) +
  ggtitle("graph") +
  labs(x="Concentration", y= "Force")

我知道这绝对是一团糟的代码,但我完全是自学成才,我觉得我在这方面有点碰壁,因为我实际上并不了解目前堆栈上的很多指南。

标签: rggplot2gridlines

解决方案


这是一个可用于对minor_breaks数刻度参数的函数。提议的函数使用了来自 ggplot2 的未导出函数,所以我有点作弊。不过,这可能只适用于 log10 轴,您可能希望通过theme()设置进一步突出主要网格线。

library(ggplot2)

# A function factory for minor log breaks
minor_breaks_log <- function(base) {
  # Prevents lazy evaluation
  force(base) 
  # Wrap calculation in a function that the outer function returns
  function(limits) {
    ggplot2:::calc_logticks(
      base = base, 
      minpow = floor(log(limits[1], base = base)), 
      maxpow = ceiling(log(limits[2], base = base))
    )$value
  }
}

ggplot(msleep, aes(bodywt, brainwt)) +
  geom_point() +
  scale_y_log10(minor_breaks = minor_breaks_log(10)) +
  scale_x_log10(minor_breaks = minor_breaks_log(10))
#> Warning: Removed 27 rows containing missing values (geom_point).

reprex 包于 2020-12-02 创建(v0.3.0)


推荐阅读