我正在使用数据集在水平方向创建水平。类似于R: How can I make a barplot with labels parallel (horizontal) to bars中提出的解决方案。
但是,水平条形图中Y轴的标签数量太多(由于手头的问题),因此它们相互重叠。
有没有办法保留条形图箱尺寸并在条形图的水平方向上显示Y标签的子集?
感谢, 拉雅
答案 0 :(得分:1)
以下是一种方法,我们可以使用nice solution将数据中的名称与空格交错:
set.seed(123)
df1 <- data.frame(x = replicate(50, paste(sample(letters, 2, replace = T), collapse = '')),
y = sample(1:10, 50, replace = T), stringsAsFactors = FALSE)
barplot(df1$y, names.arg = c(rbind(df1$x, rep('', 50)))[1:50], horiz = T, las = 1)
主要技巧是names.arg = c(rbind(df1$x, rep('',50)))[1:50]
行。它在数据的名称之间交错空格。实际上,我们用空格替换了一半的名称。
如果这还不够,我们可以定义一个函数,它接受名称向量x
和多个m
,它定义了用空格替换的值:< / p>
replace_multiple <- function(x, m){
len_x <- length(x)
index_to_replace <- seq(1, len_x, by = m)
x[index_to_replace] <- ''
return(x)
}
replace_multiple(letters[1:12], m = 2)
# "" "b" "" "d" "" "f" "" "h" "" "j" "" "l"
replace_multiple(letters[1:12], m = 3)
# "" "b" "c" "" "e" "f" "" "h" "i" "" "k" "l"
replace_multiple(letters[1:12], m = 4)
# "" "b" "c" "d" "" "f" "g" "h" "" "j" "k" "l"