gpt4 book ai didi

r - ggplot2 中 x 轴上的额外空白

转载 作者:行者123 更新时间:2023-12-01 12:38:56 28 4
gpt4 key购买 nike

我写了这个函数(灵感来自 this Learning R post)来显示矩阵:

library(ggplot2)

tile_matrix_plot <- function(M, breaks) {

M.m <- melt(M)
base_size <- 9
p <- ggplot(M.m, aes(Var1, Var2)) +
geom_tile(aes(fill=value), colour="white", size=.2) +
scale_fill_gradient(low="blue", high="green") +
theme_grey(base_size = base_size) +
labs(x = "", y = "") +
scale_x_discrete(expand=c(0,0), breaks=breaks) +
scale_y_reverse(expand=c(0,0), breaks=breaks) +
theme(legend.position = "none",
axis.ticks = element_blank(),
axis.text = element_text(size=base_size*.8, angle=90,
hjust=0, colour="grey50"),
panel.background = element_blank())

return(p)
}

当我尝试使用它时这样说

tile_matrix_plot(
matrix(c(.7,.4,.05,.2,
.4,.6,.05,.2,
.05,.05,.1,.05,
.2,.2,.05,.4), ncol=4),
1:4)

我在 x 轴的末尾有额外的空白。这是示例输出 Example of the image .

如何去除 x 轴上多余的空白区域?似乎 x 轴总是超出我在 scale_x_discrete 中使用 breaks 参数指定的点。

最佳答案

您可以使用 coord_cartesian 去除空白。我还对您的功能进行了另外两项更改。首先,该函数将矩阵列绘制为图形行,并将矩阵行绘制为图形列。我对此进行了更改(通过反转函数中的 Var1Var2),以便图表中的行(列)对应于矩阵中的行(列)。其次,我删除了函数的 breaks 参数,因为它可以根据矩阵中的行数/列数在函数内部设置。

tile_matrix_plot <- function(M) {                         # breaks argument removed

M.m <- melt(M)
base_size <- 9
p <- ggplot(M.m, aes(Var2, Var1)) + # Reversed Var1 and Var2
geom_tile(aes(fill=value), colour="white", size=.2) +
scale_fill_gradient(low="blue", high="green") +
theme_grey(base_size = base_size) +
labs(x = "", y = "") +
scale_x_discrete(expand=c(0,0), breaks=1:ncol(M)) + # Set x-breaks here
coord_cartesian(xlim=c(0.5, ncol(M)+0.5)) + # To get rid of white space
scale_y_reverse(expand=c(0,0), breaks=1:nrow(M)) + # Set y-breaks here
theme(legend.position = "none",
axis.ticks = element_blank(),
axis.text = element_text(size=base_size*.8, angle=90,
hjust=0, colour="grey50"),
panel.background = element_blank())

return(p)
}

我实际上不确定为什么 ggplot2 在右侧添加额外的空间,但 coord_cartesian 将其删除。

关于r - ggplot2 中 x 轴上的额外空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851954/

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