我喜欢将平行协调图的每条线的标签放在每条线旁边。 我尝试在另一个数据集上使用 @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))
谢谢你 哇巴特
问题在于,所有
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))