我有一个数据帧:
分类时间一次b类别1 xxx.xx xxx.xx类别2 xxx.xx xxx.xx。 。 。。 …
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())