在ggpairs的上部面板中更改标签

8
你知道如何在ggpairsGgally包)中更改上部面板中的标签吗?我找到了如何更改大小、字体,但不知道如何更改标签。我想要缩短标签(例如,“set”代表setosa等)。我尝试将其放入labels=c("set", "ver", "vir")upper=list(params=list(size=8),labels=c("set", "ver", "vir")),但没有成功。
ggpairs(iris, columns=c(2:4), title="variable analysis", colour="Species",
        lower=list(params=list(size=2)), upper=list(params=list(size=8))) 

iris DATA GGPAIRS


1
我无法测试它,因为你的代码不可复制,但你可以尝试使用theme(text= element_text(size = 8))来缩小标签。 - RHA
谢谢,我刚刚用鸢尾花数据集提供了一个可重现的例子。但是我想要改变标签(例如将versicolor改为“ver”等),而不是它们的大小。 - catindri
此外,更换电脑后保存的图像结果不同!在这里可能是正确的,但在我的笔记本电脑上,标签被隐藏了。 - catindri
2个回答

3

这个方法不太美观,但是你可以这样做(在图表中重命名级别):

library(GGally)
gplt <- ggpairs(iris, columns=c(2:4), 
        title="variable analysis", 
        colour="Species", 
        lower=list(params=list(size=2)), 
        upper=list(params=list(size=6)))

levels(gplt$data$Species)[levels(gplt$data$Species)=="versicolor"] <- "ver"
levels(gplt$data$Species)[levels(gplt$data$Species)=="virginica"] <- "vir"
levels(gplt$data$Species)[levels(gplt$data$Species)=="setosa"] <- "set"

print(gplt)

enter image description here


3
与@Mike的解决方案在概念上相同,但只需一行代码即可实现。
levels(iris$Species) <- c("set", "ver", "vir")
ggplairs(<...>)

如果您有许多级别并且不想手动缩写它们,则可以采用更灵活的建议:将级别削减到所需长度。

levels(iris$Species) <- strtrim(levels(iris$Species), 3)
ggplairs(<...>)

顺便提一下,width参数也可以进行向量化:

rm(iris)
strtrim(levels(iris$Species), c(1, 3, 5))
#[1] "s"     "ver"   "virgi"

天啊,我以为整个重点是在不改变生成图形的数据的情况下完成它。 - Mike Wise
@MikeWise 同样适用于 levels(gplt$data$Species)。关键是,没有必要迭代级别(想象一下有100个因子级别)。 - tonytonov
1
我喜欢你重新命名等级的方式。我应该也尝试过那样做,因为我的方法看起来很不优雅,但当时已经很晚了,我又有些困了。 - Mike Wise

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接