【问题标题】:Set default options for multiple plots为多个绘图设置默认选项
【发布时间】:2018-04-04 09:58:56
【问题描述】:

我有一个大型数据集,我有多个图。我知道建议使用构面,但我的观众更喜欢同一情节区域中的多个范围。我在同一个图中最多有 7 个不同的变量/范围 - 在下面的代码 sn-p 中由 type 指示。

我有一些参数对于所有地块都保持不变(在初始 ggplot 语句 ggplot(dat, aes(x = loc_time, y = <variable_name>) 之后:

geom_point(aes(shape = type, color = type, fill = type)) + 
  scale_shape_manual(values = c(21,22,23,25,15,17,16)) + 
  scale_fill_manual(values = c('#e41a1c','#377eb8','#4daf4a','#984ea3', '#ff7f00','#a65628','#f781bf','black')) + 
  scale_color_manual(values = c('#e41a1c','#377eb8','#4daf4a','#984ea3', '#ff7f00','#a65628','#f781bf','black')) +
  scale_size_manual(values = c(1,2,2,1,2,2,1)) + 
  geom_line(aes(color = type))
  xlab("Local Time")

我可以复制粘贴此信息。对所有情节陈述,但想知道是否有办法只声明一次。

我找到了这篇帖子Reset the graphical parameters back to default values without use of dev.off(),但它并没有完全回答我的问题。

【问题讨论】:

  • 你可以 1) 使用一个函数; 2)将命令存储在列表中; 3)创建一个“绘图模板”p并用新数据p %+% d更新它(这要求所有data.frames共享相同的名称,即长格式)
  • 你能给我一个这些方法的例子吗?我以前没有这样做过。试图使用par(),但它只是抛出了错误——可能是我丢失/错误的输入。
  • 我将这些值按原样绘制在一个函数中,我不想使用另一个函数来实现这一点。

标签: r ggplot2


【解决方案1】:

你可以这样做:

定义你的功能:

format_cust <- function(.x) {
    .x + 
        geom_point(aes(shape = type, color = type, fill = type)) + 
        scale_shape_manual(values = c(21,22,23,25,15,17,16)) + 
        scale_fill_manual(values = c('#e41a1c','#377eb8','#4daf4a','#984ea3', '#ff7f00','#a65628','#f781bf','black')) + 
        scale_color_manual(values = c('#e41a1c','#377eb8','#4daf4a','#984ea3', '#ff7f00','#a65628','#f781bf','black')) +
        scale_size_manual(values = c(1,2,2,1,2,2,1)) + 
        geom_line(aes(color = type)) + 
        xlab("Local Time")
    }

然后应用它:

library(dplyr)
mtcars %>% 
    mutate(type = factor(carb)) %>% 
    ggplot(aes(mpg, cyl)) %>% 
    format_cust()

【讨论】:

  • 因为你的geom_point调用,你必须使用一个函数。否则你可以添加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-19
  • 2019-11-12
相关资源
最近更新 更多