如何解决ggplotly()覆盖ggplot theme()参数导致背景色设置不生效问题?
原因说明
ggplotly()在转换ggplot静态绘图对象为交互对象时,不会完全继承theme()中设置的画布、绘图区背景类参数,plotly有独立的布局配置体系,需要额外通过layout()方法补充设置。
修正代码
# 先生成ggplot静态绘图对象 p <- df %>% filter(!is.na(Boxoffice)&!is.na(Decade)) %>% ggplot(aes(x=Boxoffice,y=IMDb.Score))+ geom_point(aes(text=Title),size=2,alpha=0.3,color = "#DB5461")+ theme_aes()+ facet_wrap(~Decade)+ theme(plot.background = element_rect(fill="#f0f0f0",color="#b4b4b4")) # 转换为交互对象后补充背景配置 ggplotly(p) %>% layout( plot_bgcolor = "#f0f0f0", # 子图绘图区背景色 paper_bgcolor = "#f0f0f0" # 整体画布背景色 )
参数说明
- 如果你需要保留静态图里的边框效果,可以在
layout()中额外添加border = list(color = "#b4b4b4", width = 1)参数即可 - 可根据实际需求分别调整
plot_bgcolor和paper_bgcolor的取值,实现和静态ggplot完全一致的背景效果
内容的提问来源于stack exchange,提问作者aStarIsCorn
相关产品推荐
相关产品推荐

