R语言中ggplotly绘制基因分组箱线图重叠问题解决
问题与解决方案
数据集概况
拥有如下格式的数据集(共约150行):
Y Gene1 Gene2 Gene3 Gene4 Gene... TypeI 4.3621833 7.533461 3.9561242 4.457170 ... TypeII 1.9844923 7.455194 5.4276231 5.440957 ... TypeIII 1.7273229 8.079968 2.2273002 5.543480 ... ...
其中Y列仅包含TypeI、TypeII、TypeIII三类取值。
需求与问题
需要绘制分组箱线图:X轴为基因名称,每个基因对应3个分别匹配Y列三类取值的箱线图。但最终导出的图出现箱线图重叠的问题。
尝试过的无效操作
- 数据格式转换:先后使用
pivot_longer、gather(以及melt)将宽格式数据转为长格式,示例代码如下:
使用pivot_longer的代码:
使用data %>% pivot_longer( cols = -Y, names_to = "Genes", values_to = "Value" ) %>% ggplot( aes( x = Genes, y = Value, fill = Y ) ) + geom_boxplot() + labs( title = "test" )gather的代码:data %>% gather("Genes", "Valor", -Y) %>% ggplot( aes( x = Genes, y = Valor, fill = Y ) ) + geom_boxplot() + labs( title = "test" ) -> plot plot <- ggplotly(plot, width = 2000, height = 1000) saveWidget(plot, file = "boxplots.html") - 位置参数调整:在
geom_boxplot()中尝试使用position_dodge()和position_dodge2(),均无法解决重叠问题。
有效解决方案
经测试确认,ggplot原生绘制的图形显示正常,问题出在ggplotly导出环节。只需在ggplotly()调用后追加%>% layout(boxmode = "group"),即可解决箱线图重叠问题,修正后的代码如下:
plot <- ggplotly(plot, width = 2000, height = 1000) %>% layout(boxmode = "group")
内容的提问来源于stack exchange,提问作者raulminan
相关产品推荐
相关产品推荐

