如何在R语言中使用echart4r包实现坐标轴标签置于条形图内?
问题描述
这是我想要实现的效果:
我正尝试在R语言中使用echart4r包复现上图(标签置于条形内的条形图)。为了让坐标轴标签显示在条形内,我在e_x_axis()中使用了**axisLabel = list(inside = TRUE)**,代码如下,但标签被条形遮挡,无法正常显示:
Name <- c("Jon", "Bill", "Maria", "Ben", "Tina") Age <- c(23, 41, 32, 58, 26) df <- data.frame(Name, Age) df %>% e_charts(Name) %>% e_bar(Age) %>% e_x_axis( inverse = TRUE, axisLabel = list(inside = TRUE), axisTick = list(show = FALSE), axisLine = list(show = FALSE) ) %>% e_legend(show = FALSE) %>% e_flip_coords()
当前得到的效果:
解决办法
可以通过调整元素层级解决标签遮挡问题,两种方式任选其一:
方式1:提升坐标轴标签层级
在axisLabel参数中添加z = 10(数值只要大于条形默认层级即可),让标签显示在条形上方:
Name <- c("Jon", "Bill", "Maria", "Ben", "Tina") Age <- c(23, 41, 32, 58, 26) df <- data.frame(Name, Age) df %>% e_charts(Name) %>% e_bar(Age) %>% e_x_axis( inverse = TRUE, axisLabel = list(inside = TRUE, z = 10), # 添加z属性提升标签层级 axisTick = list(show = FALSE), axisLine = list(show = FALSE) ) %>% e_legend(show = FALSE) %>% e_flip_coords()
方式2:降低条形层级
在e_bar函数中设置z = -1,让条形显示在标签下方:
Name <- c("Jon", "Bill", "Maria", "Ben", "Tina") Age <- c(23, 41, 32, 58, 26) df <- data.frame(Name, Age) df %>% e_charts(Name) %>% e_bar(Age, z = -1) %>% # 设置条形层级为-1 e_x_axis( inverse = TRUE, axisLabel = list(inside = TRUE), axisTick = list(show = FALSE), axisLine = list(show = FALSE) ) %>% e_legend(show = FALSE) %>% e_flip_coords()
如果需要更美观的效果,还可以配合调整条形宽度,比如在e_bar中加入barWidth = "70%",给标签留出更合适的显示空间。
内容的提问来源于stack exchange,提问作者Essossinam
相关产品推荐
相关产品推荐

