How to resolve ggplotly error using color fill

孤街醉人 提交于 2019-12-12 22:27:26

问题


Using the ggplotly call extending from ggplot2, I'm trying to add an outline to the points.

The call to ggplot works, but extending the call to ggplotly yields an error.

The objective is the have an interactive plot with color filled points based on a continuous variable with a black outline (using pch=21 in this case).

Minimal reproducible example:

library(ggplot2)
library(plotly)
ggplot(data=mtcars, aes(mpg, wt, fill=hp))+geom_point(pch=I(21))+scale_fill_continuous(low='red', high='blue')

ggplot(data=mtcars, aes(mpg, wt, fill=hp))+geom_point(pch=I(21))+scale_fill_continuous(low='red', high='blue')+ggplotly()

Error: Don't know how to add o to a plot In addition: Warning message: In L$marker$color[idx] <- aes2plotly(data, params, "fill")[idx] : number of items to replace is not a multiple of replacement length


回答1:


You're almost there, but instead of tagging on +ggplotly() on the end of the ggplot() call, you need to surround the ggplot with ggplotly

## save the ggplot object 
g <- ggplot(data=mtcars, aes(mpg, wt, fill=hp))+
    geom_point(pch=I(21))+
    scale_fill_continuous(low='red', high='blue')

## call ggplotly on the ggplot object
ggplotly(g)

Although, I am noticing that the fill isn't respected when calling ggplotly...

To do this directly in plot_ly, you can specify a colour palette and plot it

pal <- colorRampPalette(c("red","blue"))(length(unique(mtcars$hp)))

plot_ly(data = mtcars, x = ~mpg, y = ~wt, color = ~hp, colors = pal, 
            type = "scatter", mode = "markers",
            marker = list(size = 10,
                          line = list(color = "black",
                          width = 2)))

See here and here for more examples



来源:https://stackoverflow.com/questions/41155348/how-to-resolve-ggplotly-error-using-color-fill

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!