使用ggplot用单个向量创建条形图

时间:2018-08-23 14:08:38

标签: r ggplot2

在香草R中,从barplot文件中的单个矢量/列创建.csv没问题:

msgs <- read.csv(file = "C:/my/csv/file.csv", header = TRUE, sep = ",")

barplot(table(msgs$Author))

此代码产生以下barplot

enter image description here

尽管如此,我很难用ggplot2软件包来复制它。要使用qplot()进行操作,此代码可以正常工作:

qplot(as.factor(msgs$Author), geom="bar")

但是我需要它作为ggplot(),我似乎无法使它工作。我尝试过:

ggplot() + 
aes(table(msgs$Author)) + 
geom_bar(stat = "identity", width = .75, ill = "tomato3")

(根本不起作用)和

ggplot(msgs, aes(x = Author, y = Timestamp)) +
geom_bar(stat = "identity", width = .75, fill = "tomato3")

上面的代码段确实显示正确的结果

enter image description here

但是y轴全错了。我不希望时间戳记为y轴,而是让每个作者在向量/列中显示的时间。

我真的找不到一种为ggplot()提供单个列或向量的方法。你们任何人都可以帮我吗?

编辑:以下数据可用于复制我的数据集。它不是确切的值,但只需要格式即可。

Timestamp,Author
1534334332013,user1
1534334331252,user2
1534333113577,user2
1534333112754,user3
1529160743306,user4
1528886271012,user3
1528886269171,user5
1528886261391,user5
1526477321297,user5
1526477320773,user4

2 个答案:

答案 0 :(得分:2)

我产生了类似的例子:

xxx <- rpois(1000, 10)
xtable <- table(xxx)

ggplot(data = NULL, aes(x = as.numeric(names(xtable)), y = as.numeric(xtable))) +
geom_bar(stat = "identity", width = .75)

这应该为您提供正确的答案。

答案 1 :(得分:2)

如果您只是放弃geom_bar的美感,y层将为您计算观察值。例如

ggplot(msgs, aes(Author)) + geom_bar()

经过测试

msgs <- read.csv(text="Timestamp,Author
  1534334332013,user1
  1534334331252,user2
  1534333113577,user2
  1534333112754,user3
  1529160743306,user4
  1528886271012,user3
  1528886269171,user5
  1528886261391,user5
  1526477321297,user5
  1526477320773,user4")

生产

enter image description here