ggplot을 사용하여 일부 타일에 p- 값으로 레이블이 지정된 상관 행렬을 만들고 싶습니다. 이 타일 내에서 "p"를 기울임 꼴로 표시하고 싶습니다.
이것은 "p"가 이탤릭체로 표시되어야한다는 점을 제외하고 내가 원하는 플롯입니다.
지금은 aes (label)을 사용하여 타일을 채우고 플롯 외부에 해당 레이블을 만듭니다. 이렇게하면 플롯 내부에 표시 할 빈 레이블을 만들 수 있습니다.
플롯은 현재 다음을 사용하여 만들어집니다.
figure1 <- ggplot(iris.corr.data, aes(colvars, fct_rev(rowvars)))
figure1 +
geom_tile(colour="grey70", aes(fill=corr), size = 0.5) +
scale_fill_gradient2(name = "Pearson\nCorrelation",low = "#D7191C", mid = "white", high = "#2C7BB6", midpoint=0, limits=c(-1,1)) +
geom_text(aes(label= p_labels), size=2.5, colour="black") +
labs(x="",y="") +
theme_classic() +
theme(axis.text.x = element_text(angle = 30, vjust = .5, size = 9))+
coord_fixed()
"p_labels"는 다음을 사용하여 이전에 생성되었습니다.
iris.corr.data$p_labels[iris.corr.data$p.value < 0.1 & iris.corr.data$p.value > 0] <- paste("p = ", formatC(iris.corr.data$p.value[iris.corr.data$p.value < 0.1 & iris.corr.data$p.value > 0], digits = 2))
여기서 p.value는 각 상관에 대한 모든 p- 값을 포함하는 변수입니다.
p_labels 변수를 만들 때 표현식 함수를 사용해 보았지만 변수에 기울임 꼴 문자를 저장하는 데 실패했습니다. 플롯 자체에서 이탤릭체를 표현해야한다고 생각하지만, geom_text (aes (label = p_labels))를 사용할 때 ggplot에서 요소의 일부를 이탤릭체로 표현하는 방법을 잘 모르겠습니다.
다음은 홍채 데이터 셋을 사용하여 재현 가능한 코드입니다.
library("corrplot")
library("tidyverse")
corr.data = function(data) {
# Correlations
cor.vals = cor(data, use = "complete.obs")
# P-values
cor.p = cor.mtest(data, conf.level = .99)$p
rownames(cor.p) = rownames(cor.vals)
colnames(cor.p) = colnames(cor.vals)
cbind(rowvars=rownames(cor.vals), data.frame(cor.vals)) %>%
gather(colvars, corr, -rowvars) %>%
left_join(cbind(rowvars=rownames(cor.p), data.frame(cor.p)) %>%
gather(colvars, p.value, -rowvars))
}
df <- subset(iris, select = c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width))
iris.corr.data <- corr.data(df)
iris.corr.data$p_labels <- ""
iris.corr.data$p_labels[iris.corr.data$p.value < 0.1 & iris.corr.data$p.value > 0] <- paste("p = ", formatC(iris.corr.data$p.value[iris.corr.data$p.value < 0.1 & iris.corr.data$p.value > 0], digits = 2))
figure1 <- ggplot(iris.corr.data, aes(colvars, fct_rev(rowvars)))
figure1 +
geom_tile(colour="grey70", aes(fill=corr), size = 0.5) +
scale_fill_gradient2(name = "Pearson\nCorrelation",low = "#D7191C", mid = "white", high = "#2C7BB6", midpoint=0, limits=c(-1,1)) +
geom_text(aes(label= p_labels), size=2.5, colour="black") +
labs(x="",y="") +
theme_classic() +
theme(axis.text.x = element_text(angle = 30, vjust = .5, size = 9))+
coord_fixed()
이것은 작동합니다 ( 및 에서 표현식과 italic()
함께 사용 ) :plotmath
parse=TRUE
geom_text()
iris.corr.data$p_labels[iris.corr.data$p.value < 0.1 & iris.corr.data$p.value > 0] <- paste("italic(p) == ", formatC(iris.corr.data$p.value[iris.corr.data$p.value < 0.1 & iris.corr.data$p.value > 0], digits = 2))
ggplot(iris.corr.data, aes(colvars, fct_rev(rowvars))) +
geom_tile(colour="grey70", aes(fill=corr), size = 0.5) +
scale_fill_gradient2(name = "Pearson\nCorrelation",low = "#D7191C", mid = "white", high = "#2C7BB6", midpoint=0, limits=c(-1,1)) +
geom_text(aes(label= p_labels), size=2.5, colour="black", parse=TRUE) +
#geom_text(aes(label= p_labels), size=2.5, colour="black") +
labs(x="",y="") +
theme_classic() +
theme(axis.text.x = element_text(angle = 30, vjust = .5, size = 9))+
coord_fixed()
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다