【发布时间】:2020-07-27 04:46:17
【问题描述】:
我正在尝试将我的 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,这将是最简单的解决方案。数据sn-p在这篇文章的最后。
谢谢!!
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 )
【问题讨论】:
-
嗨 - 您可以通过
dput(your.data.frame)或至少其中的一部分发布您的数据,以便我们有一个可重复的示例吗? -
当然,我忘记了。在 OP 中添加了一个 sn-p。
-
感谢您的发帖,但不幸的是,我无法使用该数据生成合理的图表(我认为它仅代表一个日期)。使用
sample()从原始数据框中获取几行可能是一个好主意:(例如,algo_pricing[sample(1:nrow(algo_pricing), 20),]可以随机获取 20 行),但您需要确保您的示例适用于您发布的数据集.此外,您从代码中得到了什么,它似乎哪里出了问题?您是在生成一个看起来不正确的情节还是收到错误消息? -
啊,很抱歉。进行了上面的编辑。我收到“手动比例错误中的值不足”。那是因为颜色已经用两个值定义了。
-
删除您的
scale_color_manual和scale_linetype_manual电话。这将产生一个情节,但可能不是你想看到的。ggplot将在您指定相同的美学时组合比例:例如,您指定将geom_line的线型和geom_point的外部颜色应用于相同的因子(as.factor(bbox))。创建了一个图例,指示 bbox 用一种颜色点缀或用另一种颜色纯色(两者结合)。删除那些scale_...电话,发布你的情节,然后澄清你的问题——可能与传说和标签有关。
标签: r ggplot2 aesthetics