以下是我试图模仿的示例,但我甚至不需要在我的用例中使用tweenr库:
https://www.r-graph-gallery.com/288-animated-barplot-transition/
我无法弄清楚如何使用ggplot使用我的CSV数据框制作一个合适的条形图。
我的数据集是一个CSV文件,如下所示:
Year,LabelOne,LabelTwo,LabelThree
87-88,15160,3190,1590
88-89,16530,3260,1650
89-90,17050,3340,1650
我正在使用
df <- read.table("~/Downloads/data.csv", header = T, sep = ",")
但那是我被卡住的地方,我正在尝试制作一个动画条形图,但我甚至无法制作静态条形图。这个想法是数据集中的每一行都是最终GIF中的一个帧。 (Lables作为标签,值是每个相应条形图的高度,第1列用作每个条形图的标题。)
对于前。第一帧应该并排有3个条形图,“LabelOne”高度为15160,“LabelTwo”高度为3190等。标题为“87-88”。
谢谢!
答案 0 :(得分:0)
如果这是您的数据:
df <- data.frame(stringsAsFactors=FALSE,
Year = c("87-88", "88-89", "89-90"),
LabelOne = c(15160L, 16530L, 17050L),
LabelTwo = c(3190L, 3260L, 3340L),
LabelThree = c(1590L, 1650L, 1650L)
)
第一步是转换为长格式:
library(tidyr)
df_long <- gather(df, lbs, Value, LabelOne:LabelThree, -Year)
看起来像这样:
Year lbs Value
1 87-88 LabelOne 15160
2 88-89 LabelOne 16530
3 89-90 LabelOne 17050
4 87-88 LabelTwo 3190
5 88-89 LabelTwo 3260
6 89-90 LabelTwo 3340
7 87-88 LabelThree 1590
8 88-89 LabelThree 1650
9 89-90 LabelThree 1650
然后使用ggplot
创建条形图:
ggplot(df_long[df_long$Year=="87-88",],
aes(x = lbs, y = Value, fill = lbs)) + geom_bar(stat="identity")
自动化流程:
library(dplyr)
df_long %>% group_by(Year) %>% do(plots = ggplot(data = .) +
aes(x = lbs, y = Value, fill = lbs) + geom_bar(stat = "identity") +
ggtitle(unique(.$Year))) -> plots