这是我的数据。我试图使用R将数据表示为条形图。
row.names,we,dna,dftd,ee,ebola,onc,smt
Author,4.75,7.7222,4.0698,6.9796,6.9545,8.3809,4.6391
Journal,0.45,0.4444,0.7442,0.6327,0.5151,0.5,0.5325
Year,0.35,0.5278,0.5349,0.3469,0.5,0.1548,0.1243
we,dna,dftd,ee,ebola,onc,smt
都是文章名称。 4.75:4.6391
是每篇文章中的作者差异。 .45:.5325
是每篇文章中的日记帐差异。 .35:.1243
是每篇文章中的年份差异。
最终目标是创建一个条形图,其y轴为方差,x轴为文章标题。对于作者,期刊和年份,每篇文章标题上面应该有3个小节。
我无法弄清楚如何将这些数据显示为R中的条形图。
我加载了它:
bp=read.csv(file.choose(),header=T)
如果从这里我输入
barplot(bp)
它告诉我高度必须是矢量或矩阵,我所知道的矢量就是你可以使用c(...)
创建它们。
我到处寻找并尝试了几天才问这里。
我知道这是一个简单的命令,但我无法弄清楚我做错了什么。
答案 0 :(得分:0)
您需要在矢量或矩阵中提供barplot()
高度,正如您从错误消息中注意到的那样。
我假设您现在有data.frame()
数据。
dat <- read.csv(text = "row.names,we,dna,dftd,ee,ebola,onc,smt
Author,4.75,7.7222,4.0698,6.9796,6.9545,8.3809,4.6391
Journal,0.45,0.4444,0.7442,0.6327,0.5151,0.5,0.5325
Year,0.35,0.5278,0.5349,0.3469,0.5,0.1548,0.1243")
# make data.frame into a matrix of numbers and get rid of the row.names
dat_matrix <- data.matrix(dat[, -1])
# make a barplot of the variances for each article
barplot(dat_matrix, beside = TRUE)
以上创建了这个情节:
如果需要,您也可以使用ggplot2包完成此操作。 在绘图之前,您需要将数据从大到长重新整形,这可以通过reshape2来完成。
# reshape data from wide to long and rename variables
library(reshape2)
dat_long <- melt(dat, id.vars = "row.names",
variable.name = "article_name",
value.name = "variance_value")
library(ggplot2)
p <- ggplot(data = dat_long, aes(x = article_name, y = variance_value, fill = row.names))
p <- p + geom_bar(stat = "identity", position = "dodge")
p
ggplot2版本: