диаграмма geom_dumbbell с масштабами для линии и точек - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь создать диаграмму гантелей с дополнительной информацией об изменении (зеленый / красный) и значении изменения (объем) и добавить дополнительную легенду для точек в конце гантелей.

Мой код для создания графика ниже:

library(ggalt)

# build data set
set.seed(1)

df <- data.frame(country=paste("Region", LETTERS[1:10]))
df$last_year <- runif(nrow(df))
df$this_year <- runif(nrow(df))
df$ydiff <- df$this_year - df$last_year
df$vol <- runif(nrow(df))


# create dumbbell plot
ggplot(df, aes(y=country, group=country)) + 
  geom_dumbbell(aes(x=last_year, xend=this_year, colour = ydiff, size=vol),
                colour_x = "blue",
                colour_xend = "yellow") +
  scale_color_gradient2(low="green", high="red") 

Dumbbell chart

Теперь я хотел бы добавить легенду о том, чтожелтые и синие точки. Я попытался следовать подходу в этом ответе , но он не сработал:

# Use answer with long data
df2 <- melt(df[, c("country", "last_year", "this_year")])

# create point alone works
ggplot() + geom_point(data=df2, aes(x=value, y=country, color=variable)) 

# create dumbbell alone works
ggplot() + geom_dumbbell(data=df, mapping=aes(x=last_year, xend=this_year, y=country, colour = ydiff, size=vol)) 

# combining plots does not work
ggplot() + geom_point(data=df2, aes(x=value, y=country, color=variable)) + 
  geom_dumbbell(data=df, mapping=aes(x=last_year, xend=this_year, y=country, colour = ydiff, size=vol)) 
# Error: Continuous value supplied to discrete scale

Я не знаю, как получить доступ к эстетике в гантельной таблице и автоматически построить легендуили. Можете ли вы указать мне решение?

...