首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将dataframe内容中指定的颜色分配给ggplot geom?

如何将dataframe内容中指定的颜色分配给ggplot geom?
EN

Stack Overflow用户
提问于 2020-05-27 19:52:11
回答 1查看 42关注 0票数 1

我正在尝试绘制一些点的图形,后面有一些彩色的背景区域。我希望填充颜色依赖于“象限”名称,并在数据帧本身中指定(例如在下面的示例中,“冷漠”将是粉色的)。我曾尝试将此列赋给scale_fill_manual的values参数,但似乎没有效果,例如:

代码语言:javascript
复制
quadrant_names <- c("Indifferent", "Must be present", "Attractive", "Performance", "Dislike")
quadrant_xmin <- c(-1, 2, -1, 2, -2)
quadrant_xmax <- c(2, 4, 2, 4, 0)
quadrant_ymin <- c(0, 0, 2, 2, -2)
quadrant_ymax <- c(2, 2, 4, 4, 0)
quadrant_colors <-c("pink", "yellow", "blue", "green", "purple")

kano_quadrants <- data.frame(quadrant_names, quadrant_xmin, quadrant_xmax, quadrant_ymin, quadrant_ymax, quadrant_colors)

xpoints <- runif(10, -2, 4)
ypoints <- runif(10, -2, 4)
points <- data.frame(xpoints, ypoints)

  ggplot(data=points, aes(x=xpoints, y=ypoints)) +
    geom_rect(data=kano_quadrants, aes(xmin=quadrant_xmin, xmax=quadrant_xmax, x=NULL,
                                       ymin=quadrant_ymin, ymax=quadrant_ymax, y=NULL,
                                       fill=quadrant_names), alpha=0.2) +
    geom_point() +
    geom_text(data=kano_quadrants, aes(label=quadrant_names, 
              y=(quadrant_ymin+quadrant_ymax)/2, 
              x=(quadrant_xmin+quadrant_xmax)/2))+
    geom_hline(yintercept=0) +
    geom_vline(xintercept=0) +
    theme_bw() +
    scale_fill_manual(values=kano_quadrants$quadrant_colors)

结果如下:

如何才能让它将填充颜色分配给数据帧中指定的适当级别的quadrant_name,而不是随机指定?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-27 19:58:31

fill映射到quadrant_colors并使用scale_fill_identity()

代码语言:javascript
复制
library(ggplot2)
ggplot(data=points, aes(x=xpoints, y=ypoints)) +
  geom_rect(data=kano_quadrants, aes(xmin=quadrant_xmin, xmax=quadrant_xmax, x=NULL,
                                     ymin=quadrant_ymin, ymax=quadrant_ymax, y=NULL,
                                     fill=quadrant_colors), alpha=0.2) +
  geom_point() +
  geom_text(data=kano_quadrants, aes(label=quadrant_names,
                                     y=(quadrant_ymin+quadrant_ymax)/2,
                                     x=(quadrant_xmin+quadrant_xmax)/2))+
  geom_hline(yintercept=0) +
  geom_vline(xintercept=0) +
  theme_bw() +
  scale_fill_identity()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62042475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档