- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 grid.arrange 组合多种类型的图形/表格,其中之一是使用 corrplot 的相关矩阵。有没有办法将 corrplot 转换为 grob 或导出/导入为与 grid.arrange 兼容的图像?由于我组合的其他图来自 ggplot 和 tableGrob,我似乎无法使用 par(mfrow = c(2, 2))
或 layout(matrix(1:2) ))
正如其他帖子中所建议的。
P1 <- corrplot(PANAcor, order="hclust", addgrid.col = "gray",
type="full", col = col2(50), tl.cex=1.5, tl.col="black",
method="color", tl.pos="lt", tl.srt=45, hclust.method = "average",
cl.ratio = 0.25, cl.align = "l", number.cex = 2)
summary <- grid.arrange(
top=textGrob(sprintf("%s Summary",subject), gp=gpar(fontsize=16,font=8)),
blank, P1, P2,
blank, T1, T2,
ncol=3, widths = c(0.1, 3, 3),
nrow=2, heights= c(1, 1),
bottom = textGrob(sprintf("%s run %s",version,runtime),
gp=gpar(fontsize=6,font=8), hjust=-1)
)
Error in gList(list(1, 0.45, 0.62, 0.55, 0.68, 0.64, -0.13, -0.37, -0.22, : only 'grobs' allowed in "gList" In addition: Warning message: In grob$wrapvp <- vp : Coercing LHS to a list
数据:
PANAcor <- structure(c(1, 0.56, 0.68, -0.49, -0.4, -0.39, 0.56, 1, 0.64, -0.55,
-0.49, -0.54, 0.68, 0.64, 1, -0.69, -0.57, -0.65, -0.49,
-0.55, -0.69, 1, 0.82, 0.73, -0.4, -0.49, -0.57, 0.82, 1,
0.71, -0.39, -0.54, -0.65, 0.73, 0.71, 1),
.Dim = c(6L, 6L),
.Dimnames = list(c("Anxious", "Irritable", "Upset", "Happy",
"Enthusiastic", "Outgoing"),
c("Anxious", "Irritable", "Upset", "Happy",
"Enthusiastic", "Outgoing")))
col2 <- colorRampPalette(c("#7bffff","#7bbdff","#0000ff","black",
"#ff1a1a","#ff8000","#ffff4d"))
最佳答案
gridGraphics 包中的
grid.echo
+ grid.grab
会将由 corrplot
绘制的图形转换为外观相同的 grob。问题是,只有在完全相同的图形设备尺寸下,该对象看起来才相同。
重现问题:
library(gridGraphics)
library(grid)
corrplot(PANAcor, order="hclust", addgrid.col = "gray",
type="full", col = col2(50), tl.cex=1.5, tl.col="black",
method="color", tl.pos="lt", tl.srt=45, hclust.method = "average",
cl.ratio = 0.25, cl.align = "l", number.cex = 2)
## grab the scene as a grid object & save it to P1
grid.echo()
P1 <- grid.grab()
grid.draw(P1) # looks fine, until you resize the graphics device
原始尺寸(看起来与 corrplot
生成的图形相同:
更大的尺寸(即使矩阵已扩展到矩形单元格,彩色区域仍保持正方形,并且不会扩展到每个单元格的边缘):
尺寸较小(彩色区域具有最小高度/宽度,这导致它们溢出到每个单元格的范围之外):
如果我们将多个 grob 排列在一起,几乎肯定会看起来很奇怪:
library(gridExtra)
grid.arrange(P1, P1, P1, layout_matrix = matrix(c(1, 1, 2, 3), nrow = 2, ncol = 2))
简而言之,由于 corrplot
绘制图形的方式,当图形设备大小调整时,P1 中的所有其他子对象都会同步调整,除了负责颜色的对象之外。
解决方案:
# save correlation matrix colors to a vector, then make coloured matrix grob transparent
matrix.colors <- getGrob(P1, gPath("square"), grep = TRUE)[["gp"]][["fill"]]
P1 <- editGrob(P1,
gPath("square"), grep = TRUE,
gp = gpar(col = NA,
fill = NA))
# apply the saved colours to the underlying matrix grob
P1 <- editGrob(P1,
gPath("symbols-rect-1"), grep = TRUE,
gp = gpar(fill = matrix.colors))
# convert the background fill from white to transparent, while we are at it
P1 <- editGrob(P1,
gPath("background"), grep = TRUE,
gp = gpar(fill = NA))
如果您使用 corrplot
的默认方法,请将 gPath("square")
替换为 gPath("circle")
。我还没有测试相应的 grob 名称的其他方法选项,但总体原理应该类似。
检查现在一切是否已对齐:
grid.arrange(P1, P1, P1, layout_matrix = matrix(c(1, 1, 2, 3), nrow = 2, ncol = 2))
顺便说一下,您可能需要调整 corrplot 中的文本大小参数。根据您当前的代码,标签显得相当大,并且当您将多个图排列在一起时很容易被切断。
关于r - 将 corrplot 输出转换为 grob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53734543/
我想在 times new roman 中使用 corrplot 包中的 corrplot() 函数创建图像,但没有成功。我尝试使用 par(family="Times"),但不起作用,并且在函数的帮
我正在尝试使用 corrplot 函数从相关矩阵绘制相关图。 但是我得到了一个压缩的和不可读的情节。此外,绘图是在窗口的最右端生成的。扩展 ggplot 图的方法在这里不起作用。 > col cor
我有一个简单的 8 x 8 矩阵 M <- matrix(rnorm(64), nrow=8, ncol=8) 我应该如何转换它以使用 library(corrplot) 绘制它?没有转换的错误是:
我是新手。我想使用 corrplot 创建一个相关矩阵并使用以下代码: cor.mtest <- function(mat, ...) { mat <- as.matrix(mat)
我目前正在 R 中使用 corrplot 包中的 corrplot(),并且偶然发现了两个问题。为简单起见,我将使用与 corrplot 的帮助/介绍页面相同的符号。 我想在所有单元格中记下我的 p
我正在使用 R corrplot 库。它看起来很神奇,但是为了生成一个非常好的图,我想更改相关矩阵的行和列的标签。 一种解决方案是执行以下操作: cbak <- colnames(my.data.fr
我目前正在 R 中使用 corrplot 包中的 corrplot(),并且偶然发现了两个问题。为简单起见,我将使用与 corrplot 的帮助/介绍页面相同的符号。 我想在所有单元格中记下我的 p
我在 R 中使用 corrplot 来绘制相关系数矩阵,但我的相关范围仅从 0.95 到 1.00,而且我不知道如何设置调色板的下限和上限。 corrplot(segCorr, order = "hc
当我使用 corrplot::corrplot() 绘制相关矩阵时,y 轴上的底部标签 (1) 被截掉一半,因为图的底部位于绘图区域的最底部,而 1以底轴为中心。我想用这个情节来发表。如何在底部留出更
我有一个包含 14 列的 data.frame 数据库。我将这些列分成两组:[,1:6] 和 [,7:14]。 df<-read.csv("http://renatabrandt.github.io/
我输入了下面的命令来开发一个核心图。它有效,但情节显示夹在底部边缘。更改 par(mar=c(5, 4, 4, 2) + 0.1) 参数对 corrplot 的位置没有影响。想法? library(c
我正在尝试从 kaggle 的 IMDB 电影预测数据集创建变量的相关矩阵。当我尝试绘制相关矩阵时,我在矩阵中得到以下问号。 所有变量都是数字。我如何理解问号? numeric_col <- sapp
是否可以在 corrplot 的色标中使用非均匀中断?下面的代码 library(RColorBrewer) library(corrplot) M % as.data.frame() %>%
我正在使用 corrplot 来可视化相关性,但是标题在图的上方相当高,我想让它更接近。我该怎么做呢? 示例数据框: "VADeaths" <- structure(c(11.7, 18.1, 2
我正在使用 corrplot在 R 中可视化相关系数矩阵如下。 library(corrplot) library(datasets) corrplot(abs(cor(mtcars)), metho
我需要帮助解释使用 corrplot 的错误消息。 这是我的脚本 install.packages("ggplot2") install.packages("corrplot") install.pa
是否可以绘制多个 corrplot单个图中的图? 可重现的例子: library(corrplot) data(mtcars) M <- cor(mtcars) col1 <- colorRampPa
我在 corrplo 中使用以下内容吨: require("corrplot") ## needs the corrplot package corrplot(cor(lpp_axis1, lpp_a
我正在尝试使用 R 中的 Corrplot 绘制可视化效果。我的数据框中有几个变量,但是当我尝试绘制图表时,它显示为非常破旧的可视化效果。我不知道如何删除矩阵中变量的名称并仅用数字表示它们。我使用普通
corrplot软件包提供了一些简洁的图表和文档以及示例。 但我不明白输出。我可以看到,如果您有一个矩阵 A_ij,您可以将其绘制为 n 乘 n 方形图 block 的排列,其中tile ij 对应于
我是一名优秀的程序员,十分优秀!