r - 使用 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 中的错误:二进制运算符的非数字参数
解决方案
如果您想要快速修复替换您的矩阵创建:
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)
推荐阅读
- matlab - 避免每次启动可执行文件时删除 MCR CACHE
- python - 某些向量元素的快速(稀疏)矩阵构造
- windows - 如何递归查找所有文件并使用 cmd 显示完整路径和行号?
- spring-boot - 在 Spock 中测试创建方法的问题
- javascript - 有没有办法在引导 Div 元素中调整 p5js 画布的大小?
- django - django + gninx + gunicorn 应用程序缺少“dnspython”错误,即使在将其安装到正确的虚拟环境之后也是如此
- regex - 正则表达式:匹配两个标签之间的换行符(或者两个星号)
- spring - Spring boot with high concurrency
- c# - .Net Csvhelper 标头未找到
- postgresql - 是否可以在 postgresql 中仅复制一个模式?