如何将数据显示为条形图?

时间:2015-03-14 17:58:33

标签: r plot bar-chart

这是我的数据。我试图使用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(...)创建它们。

我到处寻找并尝试了几天才问这里。

我知道这是一个简单的命令,但我无法弄清楚我做错了什么。

1 个答案:

答案 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)

以上创建了这个情节: enter image description here

如果需要,您也可以使用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版本:

enter image description here