首页 > 解决方案 > 如何使用 color() 而不是 facet_grid() 来“拆分”您的数据,但将其保持在同一个图上

问题描述

当我想用变量“拆分”我的数据时,我无法用 color() 代替 facet_grid()。我不是用回归线生成单个图,而是希望生成一个包含所有回归线的图。

这是我的代码:

ggplot(data, aes(x = Rooms, y = Price)) +
    geom_point(size = 1, alpha = 1/100) +
    geom_smooth(method = "lm", color = Type) # Single plot with all regression lines
ggplot(data, aes(x = Rooms, y = Price)) +
    geom_point(size = 1, alpha = 1/100) +
    geom_smooth(method = "lm") + facet_grid(. ~ Type) # Individual plots with regression lines

(第一个图不起作用)这是输出:“grDevices::col2rgb(color, TRUE) 中的错误:无效颜色名称 'Type' 另外:警告消息:1:删除了包含非有限值的 12750 行(stat_smooth ). 2: 删除了包含缺失值 (geom_point) 的 12750 行。”

这是数据的链接: 数据集

标签: rggplot2

解决方案


您需要为 提供美学映射geom_smooth,而不仅仅是一个参数,这意味着您需要colouraes(). 每当您想让图形元素与数据中的某些内容而不是固定参数相对应时,这就是您需要做的事情。

这是内置iris数据集的示例。事实上,如果你移动colourggplot调用,那么它也被继承geom_point,那么你可以为点和线着色。

library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
  geom_point() +
  geom_smooth(aes(colour = Species), method = "lm")

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, colour = Species)) +
  geom_point() +
  geom_smooth(method = "lm")

reprex 包(v0.2.0)于 2018 年 7 月 20 日创建。


推荐阅读