【问题标题】:ggplot2 is merging two different legend labels in a combined oneggplot2 将两个不同的图例标签合并为一个
【发布时间】:2021-05-30 12:15:57
【问题描述】:

我正在尝试使用 ggplot 为闪亮的网络应用程序生成散点图,以显示两个变量(年龄和血小板,均为数字)之间的关系。此外,我想添加两个额外的维度来显示线性关系中可能存在的差异,用颜色和形状绘制(糖尿病和贫血,这两个因素变量的值都可能为 0 或 1)。

#selected() is a reactive function that apply filters to the dataframe
ggplot(data = selected(), aes(x=age, y=platelets, shape=diabetes, color=anaemia)) + geom_point()

这段代码返回以下图例:

diabetes
0
(0,1)
(1,0)
1

我期待的是以下输出:

diabetes
0
1

anaemia
0
1

我一直在阅读 ggplot 文档,但我没有找到解决此问题的方法。我非常感谢可能的帮助来解决这个问题。

编辑: 数据集:https://www.kaggle.com/andrewmvd/heart-failure-clinical-data

selected() 函数体

selected <- reactive({
    heart %>% 
      select(c(input$variables, response))
      filter(age >= input$age[1], age <= input$age[2])
  })

【问题讨论】:

  • 欢迎来到 SO!为了帮助我们为您提供帮助,请您通过分享您的数据样本、工作代码示例和您的来重现您的问题用过的?请参阅how to make a minimal reproducible example 将您的数据类型dput(NAME_OF_DATASET) 发布到控制台,并将以structure(.... 开头的输出复制并粘贴到您的帖子中。

标签: r ggplot2 aes legend factors


【解决方案1】:

ggplot2 的默认行为是根据需要为每个变量提供单独的指南。请参阅下面的示例,其中的代码与您编写的代码等效。

library(ggplot2)

ggplot(data = mtcars) +
  aes(x = wt, y = mpg, shape = factor(am), color = factor(vs)) + 
  geom_point()

reprex package (v2.0.0) 于 2021 年 5 月 30 日创建

您显示的代码实际上是您正在运行的代码,它会产生不同的图例吗?如果是这样,请发布reproducible example 说明会发生什么。

【讨论】:

  • 非常感谢。我尝试了您的示例,并且得到了相同的输出,因此我开始在其他地方搜索问题。最后,当我将 ggplot 对象包装在一个 plotly 包装器中时,问题就出现了,所以这不是一个 ggplot 错误,而是一个 plotly 错误。
猜你喜欢
  • 1970-01-01
  • 2021-07-29
  • 2023-04-05
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 2020-07-09
相关资源
最近更新 更多