R 是一种健壮的语言,它可以产生非常丰富的可视化。所有这些功能意味着用户必须有更多的杠杆才能产生他们想要的可视化,这使学习曲线变陡了。更糟糕的是,最流行的 R 可视化库 (ggplot) 的设计方式对于来自更多面向对象语言或电子表格程序的人来说似乎很奇怪。
我制作了一些我认为你想要的东西。
df <- data.frame(cat=c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6", "cat1", "cat2", "cat3", "cat4", "cat5", "cat6"),
time_type=c("a","a","a","a","a","a","b","b","b","b","b","b"),
time=c(12.7, 16, 8.6, 13.4, 7.3, 5.5, 6.8, 15, 33, 4.2, 10, 29.5))
head(df)
cat time_type time
1 cat1 a 12.7
2 cat2 a 16.0
3 cat3 a 8.6
4 cat4 a 13.4
5 cat5 a 7.3
6 cat6 a 5.5
7 cat1 b 6.8
8 cat2 b 15
9 cat3 b 33
10 cat4 b 4.2
11 cat5 b 10
12 cat6 b 29.5
并生成图表
ggplot(data=df, aes(x=cat, y=time, fill=time_type)) +
geom_bar(stat="identity", position=position_dodge())
编辑:
您可以像这样从原始数据框生成此数据框
df2 <- data.frame(cat=c("cat1", "cat2", "cat3", "cat4", "cat5", "cat6"),
time_a=c(12.7, 16, 8.6, 13.4, 7.3, 5.5),
time_b=c(6.8, 15, 33, 4.2, 10, 29.5))
head(df2)
cat time_a time_b
1 cat1 12.7 6.8
2 cat2 16.0 15.0
3 cat3 8.6 33.0
4 cat4 13.4 4.2
5 cat5 7.3 10.0
6 cat6 5.5 29.5
然后,您可以像这样简单地融化您的数据框:
library(reshape2)
df3 <- melt(df2)
df3
cat variable value
cat1 time_a 12.7
cat2 time_a 16.0
cat3 time_a 8.6
cat4 time_a 13.4
cat5 time_a 7.3
cat6 time_a 5.5
cat1 time_b 6.8
cat2 time_b 15.0
cat3 time_b 33.0
cat4 time_b 4.2
cat5 time_b 10.0
cat6 time_b 29.5
ggplot(data=df3, aes(x=cat, y=value, fill=variable)) +
geom_bar(stat="identity", position=position_dodge())