R语言中如何调整ggplotly的图例位置至底部
问题原因及解决方案
你场景下配置不生效有两个核心遗漏:
- 你映射给
fill的score是连续型数值,ggplotly转换后默认生成连续颜色条(colorbar),而非分类图例,你之前配置的legend参数仅对分类图例生效,对连续色条无效 - 你之前设置的
y = 1.1是将元素放在绘图区域上方,不符合底部摆放的需求,plotly中坐标y=0对应画布最底部,y=1对应画布最顶部
修正后的代码
仅需要修改myplot2 reactive块内的ggplotly后续配置即可,修正后代码如下:
myplot2 <- reactive({ gpl2 <- ggplot(data,aes(y=reorder(measure, score),x=score,fill=score)) + geom_bar(stat="identity") + xlab("x")+ ylab("y")+ labs(title = NULL) ggplotly(gpl2) %>% layout( # 配置连续色条的位置和样式 colorbar = list( orientation = 'h', # 水平摆放 x = 0.5, # 水平位置居中 xanchor = 'center', # 锚点居中 y = -0.3, # 垂直位置放到绘图区域下方 title = "" # 可选:去掉默认的色条标题和ggplot样式保持一致 ), # 如果后续用到分类图例,同时保留这个配置即可 legend = list( orientation = 'h', x = 0.5, xanchor = 'center', y = -0.3 ) ) })
参数说明
orientation = 'h':设置元素水平摆放,适配底部布局x = 0.5+xanchor = 'center':让色条/图例在水平方向居中对齐y = -0.3:将元素移动到绘图区域下方,可根据页面布局调整这个数值的大小,数值越小位置越靠下- 可以直接移除ggplot代码中的
theme(legend.position="bottom")配置,因为ggplotly不会完全继承这个主题参数,避免配置冲突
内容的提问来源于stack exchange,提问作者chas
相关产品推荐
相关产品推荐

