首页 > 解决方案 > 使用 R 中的矩阵制作分组条形图

问题描述

我正在尝试使用矩阵形式的数字类型数据制作分组条形图。我从中提取的数据框将数据存储为字符串,因此我还需要将数据转换为数字类型。

制作矢量图

wt250 <- c(as.numeric(df$WT.250[which(df$X=="Ifng")]), as.numeric(df$WT.250[which(df$X=="Prdm1") ]), as.numeric(df$WT.250[which(df$X=="Il2ra")]), as.numeric(df$WT.250[which(df$X=="Cd69")]) wt50 <- c(as.numeric(df$WT.50[which(df$X=="Ifng")]), as.numeric(df$WT.50[which(df$X=="Prdm1") ]), as.numeric(df$WT.50[which(df$X=="Il2ra")]), as.numeric(df$WT.50[which(df$X=="Cd69")]) ) wt10 <- c(as.numeric(df$WT.10[which(df$X=="Ifng")]), as.numeric(df$WT.10[which(df$X=="Prdm1" )]), as.numeric(df$WT.10[which(df$X=="Il2ra")]), as.numeric(df$WT.10[which(df$X=="Cd69")] )

制作矩阵

m <- 矩阵(c(wt250, wt50, wt10), nrow=3, ncol=4, byrow = TRUE)

条形图详细信息的向量

名称 <- c("WT-250"、"WT-50"、"WT-10") 颜色 <- c("red"、"orange"、"yellow"、"green")

绘制条形图

barplot(m,main =“基因”,ylab =“浓度”,names.arg =名称,col =颜色,beside = TRUE)

我期望一个分组条形图(彼此相邻的多个条形图),x 轴上有 WT-250、WT-50 和 WT-10,其中 4 个条形图分别为红色、橙色、黄色和绿色。相反,我收到以下错误消息: -0.01 * height 中的错误:二进制运算符的非数字参数

标签: rmatrixvectorbar-chart

解决方案


如果您想要快速修复替换您的矩阵创建:

m <- matrix(c(wt250, wt50, wt10), nrow=3, ncol=4, byrow = TRUE)

经过

m <- matrix(c(wt250, wt50, wt10), nrow=4, ncol=3)

这样您现在就可以将向量放在列中。

而不是“名称”使用“colnames”。然后您的代码应该可以工作,并且 barplot 将能够绘制您想要的内容。

例子 :

mat <- matrix(1:12, nrow = 4, ncol = 3)
colnames(mat) <- letters[1:3]
rownames(mat) <- letters[23:26]

barplot(mat,col = c("red", "blue", "cyan", "orange"), beside = TRUE)

Grouped_bar_chart


推荐阅读