plotly::subplot()合并图表时轴标签丢失的解决方法咨询
解决ggplotly subplot合并后轴标签丢失的问题
当使用subplot合并ggplotly图表时,plotly默认会优化布局,可能隐藏部分轴标签(比如横向排列时默认只保留左侧y轴和底部x轴的标签)。以下两种方法可以保留所有轴标签:
方法一:提前为每个ggplotly对象设置轴属性
先为每个转换后的ggplotly对象明确指定轴的标题和显示状态,再进行合并:
library(ggplot2) library(plotly) d <- data.frame(x=1:20,y=1:20, z=20:1) p1 <- ggplot(data=d) + geom_point(aes(x=x, y=y)) + xlab("X") + ylab("Y") p2 <- ggplot(data=d) + geom_point(aes(x=x, y=z)) + xlab("X") + ylab("Z") # 为每个ggplotly对象配置轴显示 ply1 <- ggplotly(p1) %>% layout( xaxis = list(title = "X", showticklabels = TRUE), yaxis = list(title = "Y", showticklabels = TRUE) ) ply2 <- ggplotly(p2) %>% layout( xaxis = list(title = "X", showticklabels = TRUE), yaxis = list(title = "Z", showticklabels = TRUE) ) # 合并时关闭轴共享,调整边距避免重叠 subplot(ply1, ply2, nrows = 1, shareX = FALSE, shareY = FALSE) %>% layout(margin = list(l = 50, r = 50, b = 50, t = 20))
方法二:合并后统一设置多轴标签
subplot会为第二个图表的轴添加后缀2,可以直接针对这些轴设置标题:
library(ggplot2) library(plotly) d <- data.frame(x=1:20,y=1:20, z=20:1) p1 <- ggplot(data=d) + geom_point(aes(x=x, y=y)) + xlab("X") + ylab("Y") p2 <- ggplot(data=d) + geom_point(aes(x=x, y=z)) + xlab("X") + ylab("Z") ply1 <- ggplotly(p1) ply2 <- ggplotly(p2) # 合并后设置所有轴的标签 subplot(ply1, ply2, nrows = 1) %>% layout( xaxis = list(title = "X"), xaxis2 = list(title = "X"), yaxis = list(title = "Y"), yaxis2 = list(title = "Z") )
如果需要每个图表都显示完整的x轴刻度和标签,记得在subplot中设置shareX = FALSE,同时调整margin参数避免元素重叠。
内容的提问来源于stack exchange,提问作者user2955884
相关产品推荐
相关产品推荐

