gpt4 book ai didi

r - 标签中带有长名称的ggplotly

转载 作者:行者123 更新时间:2023-12-04 15:29:23 25 4
gpt4 key购买 nike

我有一些名称很长的数据,我想使用 ggplotly 进行绘制。

这是我的代码:

library(ggplot2)
library(plotly)
temp<-data.frame(x=c("longgggggggggggggggggggggggg_nameeeeeeeeeeeeeee1", "longggggggggggggggggggggggggg_nameeeeeeeeeeeeeee2"),
y=c(5,10))

break_str<-function(str,n){
if(nchar(str)<=n)
return(str)
ans<-""
for(i in 1:ceiling(nchar(str)/n)){
if(i<ceiling(nchar(str)/n)){
ans<-paste0(ans,substr(str,start=((i-1)*n+1),stop=min(i*n,nchar(str))),"\n")
} else{
ans<-paste0(ans,substr(str,start=((i-1)*n+1),stop=min(i*n,nchar(str))))
}
}
return(ans)
}

p <- ggplot(temp, aes(x=x, y=y)) +
labs(x="x",y="y") + geom_bar(stat="identity") + coord_flip() +
scale_x_discrete(labels = function(x) lapply(x,function(str){break_str(str,10)}))

ggplotly(p)

如您所见,我使用了一个自定义的 break_str 函数,它的工作方式与 stringr::str_wrap 类似,但它仍然没有删除绘图中的边距。

pggplot 版本中不会出现此问题。

任何帮助将不胜感激

谢谢

最佳答案

看起来您偶然发现了 ggplotly 中的错误(也许您应该在 github 上提出问题)。我查看了源代码。问题是 ggplotly 在计算边距时没有考虑刻度标签中的换行符。因此,边距设置得太宽。如果使用 plotly 绘图,则不会出现此问题。但是,作为一种简单的解决方法,您可以通过添加布局选项 margin = list(l = 0) 强制 automargin 完成其工作,如下所示:

ggplotly(p) %>%
layout(
margin = list(l = 0)
)

这导致了这个情节:

enter image description here

关于r - 标签中带有长名称的ggplotly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61561136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com