使用plot.matrix更改轴标记
我有一个矩阵,我想用plot.matrix包在R中绘制为热图。我的矩阵是80x80,但我只想在每五行和每五列中绘制条目(因此是一个16x16非连续子矩阵)。但是,我仍然希望x轴和y轴标记为5、10、15等,而不是1、2、3等,我还没有弄清楚。下面是我的代码(矩阵称为MSE): 以下是输出:使用plot.matrix更改轴标记,r,data-visualization,R,Data Visualization,我有一个矩阵,我想用plot.matrix包在R中绘制为热图。我的矩阵是80x80,但我只想在每五行和每五列中绘制条目(因此是一个16x16非连续子矩阵)。但是,我仍然希望x轴和y轴标记为5、10、15等,而不是1、2、3等,我还没有弄清楚。下面是我的代码(矩阵称为MSE): 以下是输出: 我希望轴标记为5、10、15等,而不是1、2、3等。如果有人知道如何解决此问题,或者有人知道另一个可以轻松解决此问题的软件包,我将不胜感激 由于您是新来的,所以最好包含一个可复制的数据示例,这样我们更容易回
我希望轴标记为5、10、15等,而不是1、2、3等。如果有人知道如何解决此问题,或者有人知道另一个可以轻松解决此问题的软件包,我将不胜感激 由于您是新来的,所以最好包含一个可复制的数据示例,这样我们更容易回答 要完成此操作,只需将
byfive
作为行和列名称添加到矩阵中
# Vector 80 * 80
mse <- runif(80 * 80, min = 10, max = 14)
# dimentions to matrix
dim(mse) <- c(80, 80)
# index to plot
byfive = seq(from = 5, to = 80, by = 5)
# New matrix keeping elements to plot
mse2 <- mse[byfive, byfive]
# adding row and col names
colnames(mse2) <- byfive
rownames(mse2) <- byfive
# plot
plot(mse2, xlab = "m2", ylab = "m1", main = "Mean-squared error")
您想要使用ggplot2和数据帧结构的解决方案吗?啊,非常感谢!同时也感谢您让我知道,接下来将包括完整的示例
# Vector 80 * 80
mse <- runif(80 * 80, min = 10, max = 14)
# dimentions to matrix
dim(mse) <- c(80, 80)
# index to plot
byfive = seq(from = 5, to = 80, by = 5)
# New matrix keeping elements to plot
mse2 <- mse[byfive, byfive]
# adding row and col names
colnames(mse2) <- byfive
rownames(mse2) <- byfive
# plot
plot(mse2, xlab = "m2", ylab = "m1", main = "Mean-squared error")
library(ggplot2)
library(dplyr)
library(tidyr)
library(forcats)
mse2 %>%
as.data.frame() %>%
rownames_to_column(var = "m1") %>%
tidyr::pivot_longer(
cols = -m1,
names_to = "m2",
values_to = "mse"
) %>%
ggplot(aes(x = fct_inorder(m2), y = fct_inorder(m1), fill = mse)) +
geom_tile() +
theme_minimal() +
scale_fill_viridis_c() +
labs(x = "m2", y = "m1",
title = "Mean-squared error") +
theme(legend.position = "bottom",
axis.ticks = element_line(color = 'black'))