r - ggplot add geom_path 具有不同的颜色美学//错误:错误:手动比例中的值不足
问题描述
我正在尝试将我的 ggplot 中的 geom_points 与 geom_path 连接起来。线条的颜色应与 geom_point 填充颜色相同。但是,geom_path 不知道填充和颜色用于不同的分组。
我还使用黑色轮廓突出显示某些 geom_points
scale_color_manual(values = c("NA", "black"), labels = c("No Buy Box", "Buy Box"))
我能做些什么?事实上,我想通过 Seller_id 绘制不同颜色(填充)的点,如果 bbox = 1,则用 color = black 突出显示这些点中的某些点,另外使用 geom_path 连接颜色中的点。我假设在我如何根据子采样对图表进行分层方面存在一些更普遍的问题。geom_path 不知道fill,这将是最简单的解决方案。数据片段在这篇文章的末尾。
谢谢!!
ggplot(data = subset(algo_pricing,bbox_product == 9200000096286280), aes(x = bbox_time2)) +
geom_point(mapping = aes(y = price_total, colour = as.factor(bbox), fill = seller_id), shape = 21) +
geom_line(data = subset(algo_pricing, bbox ==1 & bbox_product == 9200000096286280),
mapping = aes(y = bbox_price, linetype = as.factor(bbox)),colour = "black") +
geom_path(mapping = aes(y = price_total, colour = seller_id), linetype = "dotted") +
scale_linetype_manual(values = "dotted", labels = "Buy Box Price") +
scale_color_manual(values = c("NA", "black"), labels = c("No Buy Box", "Buy Box"))
example <- wrapr::build_frame(
"bbox_time2" , "bbox_price", "price_total", "seller_id" , "bbox", "min_price", "bbox_product" |
as.Date("2019-01-07"), 151 , 169.9 , "linkerlisse" , 0L , 129.5 , 4.641e-308 |
as.Date("2019-01-18"), 125 , 169.9 , "linkerlisse" , 0L , 112 , 4.641e-308 |
as.Date("2019-01-20"), 125 , 169.9 , "goedslapennl" , 0L , 118.5 , 4.641e-308 |
as.Date("2019-01-14"), 120 , 169.9 , "decoware" , 0L , 114.3 , 4.641e-308 |
as.Date("2019-01-18"), 125 , 169.9 , "goedslapennl" , 0L , 112 , 4.641e-308 |
as.Date("2019-01-19"), 125 , 125 , "bol.com" , 1L , 125 , 4.641e-308 |
as.Date("2019-01-20"), 125 , 169.9 , "decoware" , 0L , 121 , 4.641e-308 |
as.Date("2019-01-19"), 125 , 169.9 , "decoware" , 0L , 124.2 , 4.641e-308 |
as.Date("2019-01-10"), 135 , 120.3 , "hetbestebeddengoed.nl", 0L , 120.3 , 4.641e-308 |
as.Date("2019-01-11"), 135 , 135 , "bol.com" , 1L , 115.5 , 4.641e-308 |
as.Date("2018-12-31"), 151 , 151 , "bol.com" , 1L , 143.8 , 4.641e-308 |
as.Date("2019-01-17"), 125 , 169.9 , "goedslapennl" , 0L , 116.2 , 4.641e-308 |
as.Date("2019-01-20"), 125 , 169.9 , "goedslapennl" , 0L , 119.8 , 4.641e-308 |
as.Date("2019-01-17"), 125 , 169.9 , "goedslapennl" , 0L , 115.5 , 4.641e-308 |
as.Date("2019-01-22"), 112.3 , 112.3 , "hetbestebeddengoed.nl", 1L , 112.3 , 4.641e-308 |
as.Date("2019-01-01"), 151 , 169.9 , "linkerlisse" , 0L , 142.1 , 4.641e-308 |
as.Date("2019-01-21"), 125 , 127.5 , "sleepworld" , 0L , 117.8 , 4.641e-308 |
as.Date("2018-12-31"), 151 , 151 , "bol.com" , 1L , 142.8 , 4.641e-308 |
as.Date("2019-01-18"), 125 , 169.9 , "smulderstextiel.nl" , 0L , 125 , 4.641e-308 |
as.Date("2019-01-01"), 151 , 169.9 , "linkerlisse" , 0L , 141.2 , 4.641e-308 )
解决方案
试一试,很难复制您的数据框,但我遇到了类似的问题并且以下工作有效。
首先定义你的颜色和值(我也不完全理解你在这里用“NA”做什么,你需要有颜色而不是 NA)。您还为两个不同的图定义了一种颜色(线和路径确保您分别为这两个图添加)。
也看看这个解决方案:[控制比例颜色手册时,下面的图显示了 2 个图例
cl <- c("black" = "Buy Box", "blue" = "No Buy Box")
ggplot(data = subset(algo_pricing,bbox_product == 9200000096286280), aes(x = bbox_time2)) +
geom_point(mapping = aes(y = price_total, colour = as.factor(bbox), fill = seller_id), shape = 21) +
geom_line(data = subset(algo_pricing, bbox ==1 & bbox_product == 9200000096286280),
mapping = aes(y = bbox_price, linetype = as.factor(bbox)),colour = "Buy Box") +
geom_path(mapping = aes(y = price_total, colour = seller_id), linetype = "dotted", colour = "No Buy Box") +
scale_color_manual(values = c("blue", "black"))
推荐阅读
- tensorflow - TensorFlow 无法连接到 TensorFlow master。TPU 可能还没有准备好
- php - Larave 注意到在数据库中保存哈希密码
- android - 从 SQLite 检索数据并将数据显示为单选按钮
- sql - Rails 如何查询多个连接
- firebase - 使用 Firebase 将 Gridview 按钮功能移至新屏幕
- django - 如何在 Pycharm 中修改 Django Console 的默认启动脚本
- python - Jupyter Notebook io.StringIO 作为输出
- node.js - NodeJs MongDB 更新失败,来自另一个实体的 ObjectID ref
- ios - SceneKit - 定位 SCNCamera 并允许对象旋转
- html - 如何在ngfor迭代中过滤JSON数据并在角度9中获取指定值