这是一个可重现的示例:
我首先根据此示例https://github.com/hadley/ggplot2/wiki/labeller创建一个函数,然后提供数据和图形
label_wrap_gen <- function(width = 100) {
function(variable, value) {
lapply(strwrap(as.character(value), width=width, simplify=FALSE),
paste, collapse="\n")
}
}
Data <- data.frame(Language=c("C++","C++","C++", "Java","Java","Java","Java", "PythonhasaREALLYWAYTOOlonglabel"),
Files=c(400, 210, 35,55,330,220,213,76),
Difficulty=c("a","b","c","d","e","f","g","h"),
stringsAsFactors=FALSE)
g <- ggplot(Data,aes(x=Difficulty,y=Files,fill=Difficulty)) #replaced fill=feetype,
h <- g + geom_bar(stat="identity",position="dodge") + facet_grid(.~ Language, scales = "free_x", space="free",labeller=label_wrap_gen(width=.1))
h
它会产生一个带有“ PythonhasaREALLYWAYTOOlonglabel”标签的ggplot图,该图通常会超出图的边缘。
我试过geom_bar
以下链接中的各种宽度,但都无济于事:如何在ggplot2的条形图中增加条形之间的间隔?
这里有什么帮助吗?非常感谢。
虽然到目前为止的答案对包装文字很有帮助,但标签仍然难以阅读。我决定在感兴趣的变量的两边添加两个零值,并手动添加带连字符的名称,并在其中加上感兴趣的因数,将“ PythonhasaREALLYWAYTOOlonglabel”更改为“ PythonhasaREALLY-WAYTOOlonglabel”,以完成此操作到目前为止,我希望更好。虽然在“ PythonhasaREALLY-WAYTOOlonglabel”的两侧可能都留有太大的空间,但它却为我提供了所需的空间。
使用以下代码:
label_wrap_gen <- function(width = 100) {
function(variable, value) {
lapply(strwrap(as.character(value), width=width, simplify=FALSE),
paste, collapse="\n")
}
}
Data <- data.frame(Language=c("C++","C++","C++", "Java","Java","Java","Java", "PythonhasaREALLY- WAYTOOlonglabel","PythonhasaREALLY- WAYTOOlonglabel","PythonhasaREALLY- WAYTOOlonglabel"), #note that I add a hyphen here and two placeholders that will have 0 values
Files=c(400, 210, 35,55,330,220,213,0,76,0), #note that I add two 0 values here
Difficulty=c("a","b","c","d","e","f","g","h","i","j"),
stringsAsFactors=FALSE)
Data
g <- ggplot(Data,aes(x=Difficulty,y=Files,fill=Difficulty)) #replaced fill=feetype,
h <- g + geom_bar(stat="identity",position="dodge") + facet_grid(.~ Language, scales = "free_x", space="free",labeller=label_wrap_gen(width=.1))
可能有一种方法可以使两边的空间都变窄,但是我不确定如何做到这一点...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句