首页 > 解决方案 > 使用 ggplot 创建具有单个向量的条形图

问题描述

barplot从文件中的单个向量/列创建 a.csv在 vanilla R 中没有问题:

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

barplot(table(msgs$Author))

此代码产生以下内容barplot

在此处输入图像描述

不过,我很难用这个ggplot2包来复制它。要使用 a 来执行此操作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")

上面的代码片段确实显示了带有条形的正确结果

在此处输入图像描述

但是y轴全错了。我不希望 Timestamp 成为 y 轴,而是每个作者出现在向量/列中的次数。

不过,我真的找不到提供ggplot()单列或向量的方法。你们中的任何人都可以帮助我吗?

编辑:下面的数据可用于重现我的数据集。这不是确切的值,但格式就是所需要的。

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

标签: rggplot2

解决方案


如果您不考虑美学,该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")

生产

在此处输入图像描述


推荐阅读