首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ggpairs图中更改标签

在ggpairs图中更改标签
EN

Stack Overflow用户
提问于 2021-05-07 13:43:03
回答 2查看 289关注 0票数 3

我有以下代码:

代码语言:javascript
复制
library(GGally)
group <- c("b", "c", "d", "c", "d", "b", "d", "c", "b", "c", "d", "c", "d", "b", "d", "c")
one <- c(123, 174, 154, 143, 184, 134, 165, 192, 123, 174, 154, 143, 184, 134, 165, 192)
two <- c(223, 274, 254, 243, 284, 234, 265, 292, 223, 274, 254, 243, 284, 234, 265, 292)
three <- c(323, 374, 354, 343, 384, 334, 365, 392, 323, 374, 354, 343, 384, 334, 365, 392)
four <- c(423, 474, 454, 443, 484, 434, 465, 492, 423, 474, 454, 443, 484, 434, 465, 492)
df <- data.frame(group, one, two, three, four)
p <- df %>% ggpairs(.,
                    mapping = ggplot2::aes(colour=group),
                    lower = list(continuous = wrap("smooth")),
                    diag = list(continuous = wrap("blankDiag"))
)
getPlot(p, 1, 5) + guides(fill=FALSE)
plots = list()
for (i in 1:5){
  plots <- c(plots, lapply(2:p$ncol, function(j) getPlot(p, i = i, j = j)))
}  
p <- ggmatrix(plots, 
              nrow = 5,
              ncol=p$ncol-1, 
              xAxisLabels = p$xAxisLabels[2:p$ncol], 
              yAxisLabels = p$yAxisLabels, 
)
p

这是输出。

我希望以不同的顺序显示这些组。我可以通过替换dataframe的group列中的字符串来做到这一点:

代码语言:javascript
复制
df$group = str_replace_all(df$group,"b","2-b")
df$group = str_replace_all(df$group,"c","1-c")
df$group = str_replace_all(df$group,"d","3-d")

这使事情按我想要的顺序排列,但是标签变成了"1-c","2-b",“3d”,因为我改变了一些值。在保留新顺序的同时,是否可以将情节中的"1-c“、"2-b”、"3-d“分别替换为"c”、"b“、"d”?还是有别的解决办法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-07 13:50:06

与其更改值,不如将group更改为因子,并更改级别:

代码语言:javascript
复制
df$group = factor(df$group, levels = c("c","b","d"))

# the rest is unchanged:
p <- df %>% ggpairs(.,
                    mapping = ggplot2::aes(colour=group),
                    lower = list(continuous = wrap("smooth")),
                    diag = list(continuous = wrap("blankDiag"))
)
getPlot(p, 1, 5) + guides(fill=FALSE)
plots = list()
for (i in 1:5){
  plots <- c(plots, lapply(2:p$ncol, function(j) getPlot(p, i = i, j = j)))
}  
p <- ggmatrix(plots, 
              nrow = 5,
              ncol=p$ncol-1, 
              xAxisLabels = p$xAxisLabels[2:p$ncol], 
              yAxisLabels = p$yAxisLabels, 
)
p

这样,您可以保留值,但更改它们在ggplot中的出现顺序。

票数 2
EN

Stack Overflow用户

发布于 2021-05-07 13:49:41

您可以手动指定您想要的顺序如下:

df$group <- factor(df$group, levels = c("c", "b", "d"))

我想这就是你想要的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67436118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档