使用plot.matrix更改轴标记

使用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等。如果有人知道如何解决此问题,或者有人知道另一个可以轻松解决此问题的软件包,我将不胜感激 由于您是新来的,所以最好包含一个可复制的数据示例,这样我们更容易回

我有一个矩阵,我想用plot.matrix包在R中绘制为热图。我的矩阵是80x80,但我只想在每五行和每五列中绘制条目(因此是一个16x16非连续子矩阵)。但是,我仍然希望x轴和y轴标记为5、10、15等,而不是1、2、3等,我还没有弄清楚。下面是我的代码(矩阵称为MSE):

以下是输出:


我希望轴标记为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'))