[英]ggplot: How to connect points based on columns
Suppose that I have geographic data about customers and stores and also in which store the customer made his last purchase. 假设我具有有关客户和商店的地理数据,以及客户最后一次在哪家商店购物。 I want to plot customers and stores (according to their coordinates) and connect customers with their respective stores. 我想绘制客户和商店(根据他们的坐标),并将客户与其各自的商店联系起来。
Here's a toy dataset: 这是一个玩具数据集:
library(tidyverse)
library(ggrepel)
customer.data <- data.frame(
customer = letters[1:12],
store = rep(paste0("S", 1:3), 4),
customer.lat = rnorm(12),
customer.lon = rnorm(12))
store.data <- data.frame(
customer = NA
store = paste0("S", 1:3),
store.lat = rnorm(3),
store.lon = rnorm(3)
)
data <- left_join(customer.data, store.data, by = "store") %>%
arrange(store, customer)
ggplot(data, aes(x = customer.lat, y = customer.lon, group = store)) +
geom_point(color = "blue") +
geom_point(aes(x = store.lat, y = store.lon), color = "red") +
geom_text_repel(aes(label = store))
So I want to do is to connect all customers of S1 store with its point using geom_line() or geom_segment() and so on. 所以我要做的是使用geom_line()或geom_segment()等将S1商店的所有客户与其点连接起来。 How can I do that? 我怎样才能做到这一点?
ggplot(data, aes(x = customer.lat, y = customer.lon)) +
geom_point(aes(color = store)) +
geom_point(aes(x = store.lat, y = store.lon, color = store), size = 4) +
#geom_text_repel(aes(label = store)) +
geom_segment(aes(x = customer.lat, y = customer.lon,
xend = store.lat, yend = store.lon,
color = store))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.