r - 如何将数据框内容中指定的颜色分配给ggplot geoms?
问题描述
我正在尝试绘制一些点的图形,它们后面有一些彩色背景区域。我希望填充颜色取决于“象限”名称并在数据框 itelt 中指定(例如,在下面的示例中“无关”将是粉红色)。我尝试将此列分配给 scale_fill_manual 的 values 参数,但这似乎没有效果,例如:
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 的适当级别而不是随机分配?
解决方案
映射fill
到quadrant_colors
并使用scale_fill_identity()
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()
推荐阅读
- javascript - 重新声明时具有内部/嵌套函数的 javascript 中的变量范围
- sql - 使用 group by 连接三个带有 where 子句的表
- javascript - 使用 Array.reduce() 将数组转换为对象
- c# - c# - 从类中调用 public void 的问题
- sql - 如果有评论,我的 SQL 只会带来结果
- docker - 我收到一个错误,我无法连接到 macos :: daemon daemon
- node.js - 我可以模拟导入到我用 jest 导入的模块中的单个函数吗?
- android - 选择选项时按钮破坏应用程序
- python - Python Click:如何实现类似于`--help`的帮助命令?
- spring-mvc - InternalResourceViewResolver 和 UrlBasedViewResolver 之间的确切区别是什么