ggplot2 将两个不同的图例标签合并为一个

ggplot2 is merging two different legend labels in a combined one

我正在尝试使用 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])
  })

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-05-30 创建

您显示的代码实际上是您的代码吗 运行 产生了不同的图例?如果是这样,请 post 一个 reproducible example 显示发生了什么。