Я пытаюсь связать geom_points в моем ggplot с geom_path. Линии должны быть того же цвета, что и цвет заливки geom_point. Однако geom_path не знает заливки, и цвет используется для другой группировки.
Я также выделяю определенные geom_points черным контуром, используя
scale_color_manual(values = c("NA", "black"), labels = c("No Buy Box", "Buy Box"))
Что я могу сделать? Фактически, я хочу нарисовать точки разным цветом (заливкой) с помощью seller_id, выделить некоторые из этих точек с помощью color = black, если bbox = 1, и, кроме того, соединить точки в их цвете с помощью 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 )
dput(your.data.frame)
или хотя бы их часть, чтобы у нас был воспроизводимый пример? - person chemdork123   schedule 14.04.2020sample()
для захвата нескольких строк из исходного фрейма данных: (например,algo_pricing[sample(1:nrow(algo_pricing), 20),]
будет работать для случайного захвата 20 строк), но вы должны убедиться, что ваш пример работает с вашим набором данных, который вы публикуете. Кроме того, что вы получаете в результате своего кода, и где он, кажется, идет не так? Вы создаете график, который выглядит неправильно, или вы получаете сообщение об ошибке? - person chemdork123   schedule 14.04.2020scale_color_manual
иscale_linetype_manual
. Это создаст сюжет, но, вероятно, это не то, что вы хотите видеть.ggplot
объединит масштабы, если вы укажете один и тот же эстетический вид: например, вы укажете, что тип линийgeom_line
и внешний цветgeom_point
будут применяться к одному и тому же фактору (as.factor(bbox)
). Создается легенда, которая указывает, что bbox либо точечно с одним цветом, либо сплошной с другим цветом (объединяя два). Удалите этиscale_...
призывы, опубликуйте свой сюжет, затем проясните свой вопрос - возможно, относительно легенды и маркировки. - person chemdork123   schedule 14.04.2020