如何从R中的矩阵创建Barplot?

问题描述 投票:0回答:1

here之前已经问过这个问题...但是,我无法适应我的代码。

我正在尝试使用对称矩阵数据制作Barplot。这是一些示例代码:

n <- 5 # no of rows
p <- 5 # no of columns

# Create matrix of values
mat <- matrix(runif(n*p, 0, 1), nrow=n) # create matrix     
colnames(mat) <- paste0("x", 1:p)  # column names
rownames(mat) <- paste0("x", 1:nrow(mat)) # row names

diag(mat) <- 0 # set diagonals to 0
mat <- (mat+t(mat))/2  # make matrix symmetrical


# Base-R barplot:
barplot(mat, beside = T,
        col = c("red","green", "yellow", "blue", "black"))

这将产生如下内容:

Base R barplot

但是我想要达到的目标是这样的:ggplot barplot

但是我不确定我将如何实现这一目标。以下是我的处理方法,但我不确定:

library(ggplot2)
ggplot(mat, aes(x = variable names, y = values)) +
    geom_col(aes(fill = values)) +
    scale_fill_gradient2(low = "floralwhite",
                         high = "dodgerblue4") +
    theme_minimal() +
    theme(axis.title.y = element_text(angle = 0, vjust = 0.5)) +
    coord_flip()

但是由于mat是矩阵格式,因此无法执行以上操作,而且我不知道要把什么准确地放在美学上?

有什么建议吗?

r ggplot2 bar-chart
1个回答
0
投票

您是说要做这样的事情?

library(ggplot2)

tidyr::pivot_longer(data.frame(mat), cols = everything()) %>%
   ggplot() + aes(x = name, y = value) +
   geom_col(aes(fill = value)) +
   theme_minimal() + 
   theme(axis.title.y = element_text(angle = 0, vjust = 0.5)) +
   coord_flip()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.