gpt4 book ai didi

使用 ggcorrplot2 : "x-axis" labels get cropped 的 R 相关图

转载 作者:行者123 更新时间:2023-12-04 08:58:18 25 4
gpt4 key购买 nike

我正在使用 ggcorrplot2 ( github page ) 来生成我的相关图,因为我需要在顶部叠加显着性水平作为 ***

这个包依赖于ggplot2,所以我认为改变轴标签字体大小、星号颜色、渐变颜色等不同的特性会很容易。但事实证明它比我想。

我目前的问题是“x 轴”标签被裁剪出绘图区域...正如您在下面看到的,这实际上不是 x 轴,但是而是放置在对角线单元格顶部的标签。因此,很难改变它们。

查看此 MWE。我首先这样做:

data(mtcars)
#change "wt" to a very long name
names(mtcars)[6] <- "a very long name"

corrtest <- psych::corr.test(mtcars[,1:7], adjust="none")
all_matrix <- corrtest$r
all_pmat <- corrtest$p

###

P <- ggcorrplot2::ggcorrplot(all_matrix, type = "lower", method = "circle", p.mat = all_pmat, show.diag = FALSE,
insig = "label_sig", sig.lvl = c(0.05, 0.01, 0.001), pch = "*", pch.cex = 6) +
ggplot2::theme(axis.text.y=ggplot2::element_text(size=15),
legend.text=ggplot2::element_text(size=15))
grDevices::pdf(file="heat_all2.pdf", height=6, width=6)
print(
P
)
grDevices::dev.off()

产生这个:

test1

如您所见,我能够使用 ggplot2 主题修改 y 轴 标签,但不能修改“x 轴”标签或其他任何内容。 .

所以我想我可以使用 ggplot_build 并在实际打印之前调整绘图,我做了以下操作:

P <- ggcorrplot2::ggcorrplot(all_matrix, type = "lower", method = "circle", p.mat = all_pmat, show.diag = FALSE,
insig = "label_sig", sig.lvl = c(0.05, 0.01, 0.001), pch = "*", pch.cex = 6) +
ggplot2::theme(axis.text.y=ggplot2::element_text(size=15),
legend.text=ggplot2::element_text(size=15))
P2 <- ggplot2::ggplot_build(P)
P2$data[[4]]$size <- 5
P2$data[[4]]$hjust <- 0
P2$data[[3]]$angle <- 15
P2$data[[3]]$colour <- "grey30"
grDevices::pdf.options(reset = TRUE, onefile = FALSE)
grDevices::pdf(file="heat_all2.pdf", height=6, width=6)
print(
graphics::plot(ggplot2::ggplot_gtable(P2))
)
grDevices::dev.off()

产生这个:

test2

非常接近,但还没有完全实现。我一直遇到的问题如下:

  • “x 轴”标签被裁剪
  • 图的顶部和底部有奇怪的灰色区域
  • 我想改变颜色渐变,使深蓝色和深红色不是那么黑暗

我试图通过将 plot.margin=grid::unit(c(0,3,0,0),"cm") 添加到 theme 来解决这个问题,但结果是这样的(标签仍然被裁剪,图的顶部和底部有更多的灰色空间):

test3

有什么帮助吗?谢谢!

最佳答案

original function ,作者在scale_x_continuous()中设置了expand = c(0, 0)。你只需要修改那部分就可以得到你想要的

library(tidyverse)
library(ggcorrplot2)

data(mtcars)
# change "wt" to a very long name
names(mtcars)[6] <- "a very long name"

corrtest <- psych::corr.test(mtcars[, 1:7], adjust = "none")
all_matrix <- corrtest$r
all_pmat <- corrtest$p

###
P <- ggcorrplot2::ggcorrplot(all_matrix,
type = "lower", method = "circle", p.mat = all_pmat, show.diag = FALSE,
insig = "label_sig", sig.lvl = c(0.05, 0.01, 0.001), pch = "*", pch.cex = 6) +
ggplot2::theme(axis.text.y = ggplot2::element_text(size = 15),
legend.text = ggplot2::element_text(size = 15))

P +
scale_x_continuous(expand = expansion(mult = c(0, 0.25)))
#> Scale for 'x' is already present. Adding another scale for 'x', which will
#> replace the existing scale.

reprex package 创建于 2020-09-01 (v0.3.0)

关于使用 ggcorrplot2 : "x-axis" labels get cropped 的 R 相关图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63698561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com