R 在相关矩阵中包裹轴标签

R 在相关矩阵中包裹轴标签,r,ggplot2,ggally,R,Ggplot2,Ggally,我正在尝试使用创建一个相关矩阵。软件包按预期工作,但我遇到了一个问题,我想编辑轴标签在绘图上的显示方式 目前,他们将自动添加一个uu或。用空格或其他字符分隔名称。理想情况下,我希望在名称中的空格之间创建一个换行符(\n),这样长名称和短名称就可以很容易地读取,并且不会超出适当的列和行 我找到了其他人在SO上使用的解决方案,包括使用str_wrap(),但它是在ggplot()调用中使用的,而不是这个特定的包。我已经检查过了,但找不到具体编辑这些标签的位置。每当我试图编辑X轴或Y轴文本时,它都会添

我正在尝试使用创建一个相关矩阵。软件包按预期工作,但我遇到了一个问题,我想编辑轴标签在绘图上的显示方式

目前,他们将自动添加一个uu或。用空格或其他字符分隔名称。理想情况下,我希望在名称中的空格之间创建一个换行符(\n),这样长名称和短名称就可以很容易地读取,并且不会超出适当的列和行

我找到了其他人在SO上使用的解决方案,包括使用
str_wrap()
,但它是在
ggplot()
调用中使用的,而不是这个特定的包。我已经检查过了,但找不到具体编辑这些标签的位置。每当我试图编辑X轴或Y轴文本时,它都会添加一个全新的轴和一组标签

我当前将一个数据帧
dcast()
放入结果数据帧,甚至当我
gsub()
“\n”放入播放器名称列时,它们也会在
dcast()
转换中丢失

下面是一个我正在使用的示例。我想能够自动创建标签的名字和姓氏之间的换行符

library(GGally)
library(ggplot2)

test <- structure(list(Date = structure(c(17100, 17102, 17103, 17106, 
17107), class = "Date"), `Alexis Ajinca` = c(1.2, NA, 9.2, 6.4, 
NA), `Anthony Davis` = c(95.7, 76.9, 29, 67, 24.9), `Buddy Hield` = c(9.7, 
4.7, 17, 8, 28.3), `Cheick Diallo` = c(NA, NA, 3.2, NA, NA), 
    `Dante Cunningham` = c(0.5, 27.6, 14, 13.5, -1), `E'Twaun Moore` = c(19.2, 
    16.1, 22, 20.5, 10.1), `Lance Stephenson` = c(16.1, 31.6, 
    8, 8.1, 34.8), `Langston Galloway` = c(10.9, 2, 13.8, 2.2, 
    29.4), `Omer Asik` = c(4.7, 6.6, 9.9, 15.9, 14.2), `Solomon Hill` = c(4.7, 
    13.2, 12.8, 35.2, 4.4), `Terrence Jones` = c(17.1, 12.4, 
    9.8, NA, 20.8), `Tim Frazier` = c(40.5, 40.2, 18.3, 44.1, 
    7.2)), .Names = c("Date", "Alexis Ajinca", "Anthony Davis", 
"Buddy Hield", "Cheick Diallo", "Dante Cunningham", "E'Twaun Moore", 
"Lance Stephenson", "Langston Galloway", "Omer Asik", "Solomon Hill", 
"Terrence Jones", "Tim Frazier"), row.names = c(NA, -5L), class = "data.frame")

ggc <- ggcorr(test[,-1], method = c("pairwise","pearson"), 
       hjust = .85, size = 3,
       layout.exp=2)
ggc
库(GGally)
图书馆(GG2)
测试几种方法

您可以编辑
ggcorr

g = ggplot_build(ggc)
g$data[[2]]$label = gsub("_", "\n", g$data[[2]]$label )
grid::grid.draw(ggplot_gtable(g))
或者,您可以创建新的数据框,并使用
geom\u text
手动添加标签。这可能会对文本对齐和放置提供更多的控制

# I dont see how to suppress the labels so just set the size to zero
ggc <- ggcorr(test[,-1], method = c("pairwise","pearson"), 
       hjust = .85, 
       size = 0, # set this to zero
       layout.exp=2)

# Create labels and plot
dat <- data.frame(x = seq(test[-1]), y = seq(test[-1]), 
                  lbs = gsub(" ", "\n", names(test[-1]) ))
ggc + geom_text(data=dat, aes(x, y, label=lbs), nudge_x = 2, hjust=1)
#我不知道如何抑制标签,所以只需将大小设置为零即可

ggc在函数中,第45行似乎是一个可以控制名称的位置(可能使用
\n
而不是
gsub
中的下划线),并且需要将
check.names=FALSE
添加到第46行。最后我需要的是整形2,而不是第49行的整形。使用这些更改创建一个新函数似乎可以提供所需的输出。@aosmith-感谢您的建议。
gsub
推荐无疑是我错过了阅读代码的地方。但是,如果我错了,请纠正我的错误,但看起来唯一的调用似乎是针对
重塑2
。我看不出您正在从
restrape
更改为
restrape2
。此外,我的行号必须与您的行号不一致,因此我不明白您将
check.names=FALSE
置于何处。names
data.frame
的参数,因此在将“m”转换为
data.frame
时使用它。如果您看到的函数在“m”上使用了整形2,则无需更改。回答得很好。我特别喜欢第二个建议,它允许使用
geom\u text()
进行更多控制。我现在有一个问题。你这边也有同样的问题吗?@medavis6;不,我看不出这种效果。我的系统。R3.3.2、GGALY_1.0.1、ggplot2_2.1.0.9000,感谢您的检查。FWIW,我使用的是GGALY_1.2.0,ggplot2_2.1.0.9001,R3.3.1。要删除这些行,我只需将您的
size=0更改为
size=NA
。再次感谢今天所有的帮助!