Дополнительные переменные в легенде при переносе ggplot2 в plotly R
У меня возникают проблемы при создании легенды о следующем ggplot
завернут в ggplotly()
показать только одну эстетику. В настоящее время показывает три переменные (shape
, color
, linetype
) для каждой записи легенды, но я хочу показать только одну.
Только один из aes()
значения изменений на этом участке (linetype
), но другие значения соответствуют конкретным переменным и должны быть одинаковыми по всем графикам на моем сайте. Просто удаляя другой aes()
значения из графика не являются жизнеспособным решением в моем случае, так как я хочу, чтобы они изменились на других графиках, подобных этому. Кроме того, скрывая легенду и изменяя tooltip
показать информацию работает, но не является желаемым конечным результатом.
При запуске следующий код:
library(ggplot2)
library(plotly)
#aes lists
solute_colors <- c("NO3" = "#BF1616")
source_shapes <- c("rain"= 21)
location_linetypes <- c("1"= 2,"2"= 1,"3"= 3)
#create dataframe
data <- data.frame(
date = c(1966, 1970, 1972, 1979, 1989, 1990, 1998, 2000),
concentration = sample(1:8),
solute = c("NO3", "NO3", "NO3", "NO3", "NO3", "NO3", "NO3", "NO3"),
location = c("3", "1", "2", "3", "2", "1", "1", "2"),
source = c("rain", "rain", "rain", "rain", "rain", "rain", "rain", "rain")
)
#ggplot
ggplot(data, aes(x= date, y= concentration, linetype= location, color= solute, shape= source))+
geom_point() +
geom_line() +
scale_shape_manual(values = source_shapes) +
scale_color_manual(values = solute_colors)+
guides(shape = F, color = F)+ #removes shape and source legends in ggplot, but not in ggplotly
scale_linetype_manual(values = location_linetypes)
легенда показывает только linetype
, который является желаемым результатом (видно здесь). Тем не менее, при упаковке ggplotly
#ggplot p
p<-ggplot(data, aes(x= date, y= concentration, linetype= location, color= solute, shape= source))+
geom_point() +
geom_line() +
scale_shape_manual(values = source_shapes) +
scale_color_manual(values = solute_colors)+
guides(shape = F, color = F)+ #removes shape and source legends in ggplot, but not in ggplotly
scale_linetype_manual(values = location_linetypes)
#wrap p in ggplotly
ggplotly(p)
легенда появляется с тремя aes()
значения в той же строке на легенде, как видно
,
Как мне отменить это изменение при переносе в ggplotly
или вручную код в легенде для него? Я добавил темы в ggplot, которые меняют легенду в обоих ggplot
а также ggplotly
просто отлично (например, legend.position
а также legend.title
) хотя я не нашел ничего, чтобы управлять фактическими показанными переменными.
Я использую R версии 3.4.0 (RStudio версия 1.0.143) на Windows 10. Любая помощь будет принята с благодарностью!
1 ответ
Не знаю, как заставить ggplotly
уважать ваши ярлыки легенды, но вы можете вручную переписать практически все.
gp <- ggplotly(p)
gp[['x']][['data']][[1]][['name']] <- '1'
gp[['x']][['data']][[2]][['name']] <- '2'
gp[['x']][['data']][[3]][['name']] <- '3'
gp