ggparcoord() 选择错误的标签

问题描述 投票:0回答:1

我喜欢将平行协调图的每条线的标签放在每条线旁边。 我尝试在另一个数据集上使用 @Allan Cammeron 的解决方案,但遇到了以下问题:如果我选择第一列,文本标签将转换为数字。如果我选择第二列,一切都会正常。有谁知道为什么会发生这种情况?

#creating test data
data3 <- tibble(
  SeqName = paste(rep(c(
    "Gene1", "Gene2", "Gene3"
  ), 3)),
  type = paste(c(
    rep("nonresponder", 3),
    rep("norm responder", 3),
    rep("high responder", 3)
  )),
  time1 = rnorm(9, 2, 0.5),
  time2 = rnorm(9, 4, 1),
  time3 = rnorm(9, 6, 1)
)

# now the parallel coordinates plot
ggparcoord(
  data = data3,
  columns = 3:5,
  groupColumn = 2,
  showPoints = FALSE,
  splineFactor = FALSE,
  alphaLines = 1,
  boxplot = TRUE
) +
  geom_text_repel(
    aes(label = ifelse(
      variable == "time1",
      as.character(SeqName), ""
    )),
    hjust = 1.2,
    size = 5,
    direction = "y"
  ) +
  theme(text = element_text(size = 15))

谢谢你 哇巴特

r label ggally
1个回答
0
投票

问题在于,所有

character
factor
(除了
groupColumn
)都被转换为数字。因此,当使用这些列之一作为标签时,您最终会得到数字。

一种解决方法是将原始数据集中的标签或级别存储在查找向量中,然后可以使用该向量将正确的标签分配给数字:

library(ggplot2)
library(GGally)
library(ggrepel)

set.seed(123)

seqname_levels <- levels(factor(data3$SeqName))

ggparcoord(
  data = data3,
  columns = 3:5,
  groupColumn = 2,
  showPoints = FALSE,
  splineFactor = FALSE,
  alphaLines = 1,
  boxplot = TRUE
) +
  geom_text_repel(
    aes(label = ifelse(
      variable == "time1",
      seqname_levels[SeqName], ""
    )),
    hjust = 1.2,
    size = 5,
    direction = "y"
  ) +
  theme(text = element_text(size = 15))

© www.soinside.com 2019 - 2024. All rights reserved.