我在R中有一个gganimate草图,我希望我的条形图的百分比显示为标签。
但由于一些奇怪的原因,我得到了看似随机的颜色,而不是我所要求的标签。
如果我运行ggplot部分而没有动画,那么它是一个烂摊子(因为它应该),但很明显,百分比显示正确。
有什么想法吗?颜色代码并不对应于我单独选择的条形的颜色。显示的代码也循环通过大约六个不同的代码,在一个不同的速率,我选择的帧速率。而当条形是相同的高度(他们增长,直到他们达到所选择的高度显示在动画),然后他们显示相同的代码,直到他们停止,它得到冻结。
代码片段:
df_new <- data.frame(index, rate, year, colour)
df_new$rate_label <- ifelse(round(df_new$rate, 1) %% 1 == 0,
paste0(round(df_new$rate, 1), ".0%"), paste0(round(df_new$rate, 1), "%"))
p <- ggplot(df_new, aes(x = year, y = rate, fill = year)) +
geom_bar(stat = "identity", position = "dodge") +
scale_fill_manual(values = colour) +
#geom_text(aes(y = rate, label = paste0(rate, "%")), vjust = -0.7) +
geom_shadowtext(aes(y = rate, label = rate_label),
bg.colour='white',
colour = 'black',
size = 9,
fontface = "bold",
vjust = -0.7,
alpha = 1
) +
coord_cartesian(clip = 'off') +
ggtitle("% population belonging to 'No religion', England and Wales census") +
theme_minimal() +
xlab("") + ylab("") +
theme(legend.position = "none") +
theme(plot.title = element_text(size = 18, face = "bold")) +
theme(axis.text = element_text(size = 14)) +
scale_y_continuous(limits = c(0, 45), breaks = 10*(0:4))
p
p <- p + transition_reveal(index) + view_follow(fixed_y = T)
animate(p, renderer = gifski_renderer(), nframes = 300, fps = frame_rate, height = 500, width = 800,
end_pause = 0)
anim_save("atheism.gif")
2条答案
按热度按时间rnmwe5a21#
我想你可能忽略了ggplot2的一些细节,我会尽力向你描述。首先,你需要将离散值作为因子或整数输入。所以你可以在绘图前使用
as.factor()
,或者在美学上只使用factor()
。另外,你应该考虑根据自己的意愿对百分比进行四舍五入。下面是一个例子:该数据的gg图为:
你可以把所有的
theme
元素合并到一个theme()
函数中(就像我做的那样)。并且您可以使用以下代码轻松地为绘图制作动画:
输出结果如下:
希望有帮助。
q8l4jmvw2#
所以它的答案是here,虽然我不知道为什么修复工作。
出于某种原因,标签需要作为因素进入组织
我只需要加上一句:
而且效果很好。