我正在尝试使用带有 ggplot2 的分组条形图来绘制下表。
我如何以一种方式绘制它,以便根据每天并排绘制预定的审核和 noofemail?
Email Type Sent Month Sent Day Scheduled Audits Noofemails
27 A 1 30 7 581
29 A 1 31 0 9
1 A 2 1 2 8
26 B 1 29 1048 25312
28 B 1 30 23 170
30 B 1 31 18 109
2 B 2 1 6 93
3 B 2 2 9 86
4 B 2 4 3 21
ggplot(joined, aes(x=`Sent Day`, y=`Scheduled Audits`, fill = Noofemails )) +
geom_bar(stat="identity", position = position_dodge()) +
scale_x_continuous(breaks = c(1:29)) +
ggtitle("Number of emails sent in February") +
theme_classic()
没有达到我希望看到的情节。
最佳答案
使用这种数据格式,所以列名稍微有点新,不再有反引号。 read_table(text = "")
是一种在 Stack 上共享小数据集的好方法
joined <- read.table(text =
"ID Email_Type Sent_Month Sent_Day Scheduled_Audits Noofemails
27 A 1 30 7 581
29 A 1 31 0 9
1 A 2 1 2 8
26 B 1 29 1048 25312
28 B 1 30 23 170
30 B 1 31 18 109
2 B 2 1 6 93
3 B 2 2 9 86
4 B 2 4 3 21",
header = TRUE)
这就是 ggplot2 真正喜欢长数据而不是宽数据的原因。因为它需要列名来创建美感。
因此,您可以使用函数
tidyr::gather()
将感兴趣的两列重新排列为一列带有标签的列和一列带有值的列。这增加了数据框中的行数,所以这就是为什么它被称为 long。long <- tidyr::gather(joined,"key", "value", Scheduled_Audits, Noofemails)
ggplot(long, aes(Sent_Day, value, fill = key)) +
geom_col(position = "dodge")
关于r - 并排分组条形图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51984868/