【问题标题】:How to label axes on a plot when making a custom function?制作自定义函数时如何在绘图上标记轴?
【发布时间】:2019-11-08 17:11:00
【问题描述】:

我需要创建一个自定义函数来绘制几个单独的箱线图。我的函数有两个参数:一个用于 x 轴,另一个用于 y 轴。我想用我用作参数的数据框中的列的名称来标记它们。问题是当我使用colnames() 提取列名时,它在图表上没有显示任何内容,甚至没有用作参数的字母ab(当我没有时它曾经显示它们)有labs() 层)。你能帮我解决这个问题吗?我的代码如下。

forestfires <- 
 read.csv(url(
  "https://archive.ics.uci.edu/ml/machine-learning-databases/forest-fires/forestfires.csv"))

require(ggplot2)

boxplot_months <- function(a,b) {
  ggplot(data = forestfires) +
    aes_string(x=a, y=b) +
    geom_boxplot() +
    theme(panel.background = element_rect(fill="white")) +
    labs(x=colnames(a), y=colnames(b))
 }

boxplot_months(forestfires$month, forestfires$FFMC)

【问题讨论】:

  • 欢迎来到 Stack Overflow。我将您的数据集添加到您的问题中,但获得答案的标准做法(想象我不熟悉您使用的数据)是发布一个可重复的示例。请参观并阅读如何询问网站的各个部分,有关 r 中可重现示例的具体信息,请阅读 link。干杯。

标签: r ggplot2 plot axis-labels


【解决方案1】:

aes_string 将字符作为输入。

话虽如此,通过将参数作为字符串传递,您也可以在labs() 中使用ab。但是,我应该提一下 colnames(forestfires$month) 根本就没有,因为在提取一列之后,您只拥有一个向量,而不是该列。

forestfires <- 
  read.csv(url(
    "https://archive.ics.uci.edu/ml/machine-learning-databases/forest-fires/forestfires.csv"))

boxplot_months <- function(a,b, mydataset) {
 require(ggplot2)
  ggplot(mydataset) +
    geom_boxplot(aes_string(a,b)) +
    theme(panel.background = element_rect(fill="white"))+
    labs(x=a, y=b)
}

boxplot_months("month", "FFMC", forestfires)

reprex package (v0.3.0) 于 2019 年 6 月 26 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2016-06-24
    • 2011-09-12
    • 2011-08-02
    相关资源
    最近更新 更多