R 在ggplot上绘制连接两点的线段

R 在ggplot上绘制连接两点的线段,r,ggplot2,R,Ggplot2,我有一个点图,每个类别上有两个不同的点,我想创建一条线段,将每行上的两个点连接起来 items %>% group_by(category) %>% summarise(med_buy_price = mean(buy_value, na.rm = TRUE), med_sell_price = mean(sell_value, na.rm = TRUE)) %>% pivot_longer(cols = c("med_buy_pr

我有一个点图,每个类别上有两个不同的点,我想创建一条线段,将每行上的两个点连接起来

items %>%
  group_by(category) %>%
  summarise(med_buy_price = mean(buy_value, na.rm = TRUE),
            med_sell_price = mean(sell_value, na.rm = TRUE)) %>%
  pivot_longer(cols = c("med_buy_price", "med_sell_price"),
               names_to = "measure",
               values_to = "value") %>%
  ggplot(aes(x = value, y = category)) +
  geom_point(aes(color = measure), size = 3)

要创建线段,需要有线段的起点和终点。因此,您可以使用宽格式,因此不再需要透视

然后创建用于销售和购买价值的单个几何图形点,以及结合这两个点的几何图形段

此代码将在以下情况下工作:

library(ggplot2)
library(dplyr)
library(tibble)
library(tidyr)

items <- tribble(
  ~category, ~buy_value, ~sell_value,
  "Wallpaper", 2000, 5200,
  "Usables", 500, 12500,
  "Umbrellas", 200, 1800
)

items %>%
  group_by(category) %>%
  summarise(med_buy_price = mean(buy_value, na.rm = TRUE),
            med_sell_price = mean(sell_value, na.rm = TRUE)) %>%
  ggplot() +
  geom_point(aes(x = med_buy_price, y = category), size = 3, color = "red")+
  geom_point(aes(x = med_sell_price, y = category), size = 3, color = "green")+
  geom_segment(aes(x = med_buy_price, xend = med_sell_price, y = category, yend = category))

如果您不坚持使用geom_point,您可以尝试使用geom_errorbar,这将简化一点

items %>%
  group_by(category) %>%
  summarise(med_buy_price = mean(buy_value, na.rm = TRUE),
            med_sell_price = mean(sell_value, na.rm = TRUE)) %>%
  ggplot(aes(xmin=med_buy_price,xmax=med_sell_price, y = category)) +
  geom_errorbar(width=0.1)