我想为一个具有年度滑动比例的十六进制图构建动画,这样它就可以渲染每年的新十六进制图。
当前,我正在使用ggplot2
和plotly
for the animation,可以为geom_point
创建此文件,但是geom_hex
不支持plotly
},图形中不会显示任何内容。
library(plotly)
library(ggplot2)
library(gapminder)
p1 <- ggplot(gapminder) +
geom_point(aes(y = lifeExp, x = gdpPercap, frame = year))
ggplotly(p1)
p2 <- ggplot(gapminder) +
geom_hex(aes(y = lifeExp, x = gdpPercap, frame = year))
ggplotly(p2)
我追求的结果将与facet_wrap(~year)
产生的图形等效,但带有动画。
ggplot(gapminder) +
geom_hex(aes(y = lifeExp, x = gdpPercap)) + facet_grid(~year)
我也看过gganimate
,但安装困难,因此更喜欢plotly
的滑动刻度尺。谷歌搜索试图寻找如何为十六进制图制作动画的尝试是徒劳的。我可以使用R中的任何其他绘图或动画程序包来实现此目的,还是可以破解ggplot
和plotly
来完成我想要的方式?
有关如何执行此操作的代码将不胜感激。
答案 0 :(得分:1)
ggplotly的代码显示调度是通过last_plot()
值的类的hte类进行的:
ggplotly
#---------
function (p = ggplot2::last_plot(), width = NULL, height = NULL,
tooltip = "all", dynamicTicks = FALSE, layerData = 1, originalData = TRUE,
source = "A", ...)
{
UseMethod("ggplotly", p)
}
<bytecode: 0x7feba7ef5ff0>
<environment: namespace:plotly>
因此,您怀疑没有使用与plotly
类相关的GeomHex, Geom, gg
术语的“痕迹”。但是,有一种方法与类GeomPath
的值相关联,因此您可以使用geon_density2d
用该数据为2d密度设置动画。动画过程中它有点纠结,但数据的整体模式在我看来似乎很明显:
library(plotly)
library(ggplot2)
library(gapminder)
p2 <- ggplot(gapminder) +
geom_density2d(aes(y = lifeExp, x = gdpPercap, frame=year))
ggplotly(p2)
ggplot发出有关未使用帧的警告,但是必须将frame
参数保留在aes(.)
调用中,以向ggploty
发信号表示需要动画。
还使bin2d动画化间隔热图类型显示:
p3 <- ggplot(gapminder) +
geom_bin2d(aes(y = lifeExp, x = gdpPercap, frame=year))
ggplotly(p3)