Gapminder
library(tidyverse)
library(gapminder)
gapminder
gapminder %>%
ggplot(aes(x = gdpPercap, y = lifeExp )) +
geom_point()

gapminder %>%
ggplot(aes(x = log(gdpPercap), y = log(lifeExp))) +
geom_point()

gapminder %>%
ggplot(aes(x = log(gdpPercap), y = log(lifeExp), color = continent, size = pop)) +
geom_point() +
geom_text(aes(label=ifelse(country=="United States",as.character(country),'')),hjust=-0.2,vjust=0)

Faceting
gapminder
gapminder %>%
ggplot(aes(x = log(gdpPercap), y = log(lifeExp), color = continent, size = pop)) +
geom_point() +
facet_wrap(~year)

Plot.ly
library(plotly)
p <- gapminder %>%
ggplot(aes(x = log(gdpPercap), y = log(lifeExp), color = continent, size = pop)) +
geom_point() +
facet_wrap(~year)
ggplotly(p)
Plot.ly faceting
library(plotly)
p <- gapminder %>%
ggplot(aes(x = log(gdpPercap), y = log(lifeExp), color = continent, size = pop)) +
geom_point() +
facet_wrap(~year)
ggplotly(p)
Plot.ly annimation with ggplot.
To learn about Plot.ly R and Plot.ly ggplot.
The plot.ly book is an excellent place to start to learn about use of annimation plot.ly chapter 5.
gg <- gapminder %>% ggplot(aes(log(gdpPercap), log(lifeExp), color = continent)) +
geom_point(aes(size = pop, frame = year, ids = country))
Ignoring unknown aesthetics: frame, ids
ggplotly(gg)
LS0tCnRpdGxlOiAiU3RhdC4gNjUxIFdlbGNvbWUiCmF1dGhvcjogIlByb2YuIEVyaWMgQS4gU3Vlc3MiCmRhdGU6ICIxMC8xNS8yMDE4IgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQKLS0tCgojIEdhcG1pbmRlcgoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGdhcG1pbmRlcikKCmdhcG1pbmRlcgpgYGAKCgpgYGB7cn0KZ2FwbWluZGVyICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBnZHBQZXJjYXAsIHkgPSBsaWZlRXhwICkpICsgCiAgZ2VvbV9wb2ludCgpCgpgYGAKCgpgYGB7cn0KZ2FwbWluZGVyICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBsb2coZ2RwUGVyY2FwKSwgeSA9IGxvZyhsaWZlRXhwKSkpICsgCiAgZ2VvbV9wb2ludCgpCgoKYGBgCgpgYGB7cn0KZ2FwbWluZGVyICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBsb2coZ2RwUGVyY2FwKSwgeSA9IGxvZyhsaWZlRXhwKSwgY29sb3IgPSBjb250aW5lbnQsIHNpemUgPSBwb3ApKSArIAogIGdlb21fcG9pbnQoKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbD1pZmVsc2UoY291bnRyeT09IlVuaXRlZCBTdGF0ZXMiLGFzLmNoYXJhY3Rlcihjb3VudHJ5KSwnJykpLGhqdXN0PS0wLjIsdmp1c3Q9MCkKYGBgCgojIEZhY2V0aW5nCgpgYGB7cn0KZ2FwbWluZGVyCgpnYXBtaW5kZXIgJT4lICAKICBnZ3Bsb3QoYWVzKHggPSBsb2coZ2RwUGVyY2FwKSwgeSA9IGxvZyhsaWZlRXhwKSwgY29sb3IgPSBjb250aW5lbnQsIHNpemUgPSBwb3ApKSArIAogIGdlb21fcG9pbnQoKSArCiAgZmFjZXRfd3JhcCh+eWVhcikgCmBgYAoKIyBQbG90Lmx5CgpgYGB7cn0KbGlicmFyeShwbG90bHkpCgpwIDwtIGdhcG1pbmRlciAlPiUgIAogIGdncGxvdChhZXMoeCA9IGxvZyhnZHBQZXJjYXApLCB5ID0gbG9nKGxpZmVFeHApLCBjb2xvciA9IGNvbnRpbmVudCwgc2l6ZSA9IHBvcCkpICsgCiAgZ2VvbV9wb2ludCgpICsKICBmYWNldF93cmFwKH55ZWFyKQoKZ2dwbG90bHkocCkKYGBgCgojIFBsb3QubHkgZmFjZXRpbmcKCmBgYHtyfQpsaWJyYXJ5KHBsb3RseSkKCnAgPC0gZ2FwbWluZGVyICU+JSAgCiAgZ2dwbG90KGFlcyh4ID0gbG9nKGdkcFBlcmNhcCksIHkgPSBsb2cobGlmZUV4cCksIGNvbG9yID0gY29udGluZW50LCBzaXplID0gcG9wKSkgKyAKICBnZW9tX3BvaW50KCkgKwogIGZhY2V0X3dyYXAofnllYXIpCgpnZ3Bsb3RseShwKQpgYGAKCiMgUGxvdC5seSBhbm5pbWF0aW9uIHdpdGggZ2dwbG90LgoKVG8gbGVhcm4gYWJvdXQgW1Bsb3QubHkgUl0oaHR0cHM6Ly9wbG90Lmx5L3IvKSBhbmQgW1Bsb3QubHkgZ2dwbG90XShodHRwczovL3Bsb3QubHkvZ2dwbG90Mi8pLgoKVGhlIFtwbG90Lmx5IGJvb2tdKGh0dHBzOi8vcGxvdGx5LWJvb2suY3BzaWV2ZXJ0Lm1lLykgaXMgYW4gZXhjZWxsZW50IHBsYWNlIHRvIHN0YXJ0IHRvIGxlYXJuIGFib3V0IHVzZSBvZiBhbm5pbWF0aW9uIFtwbG90Lmx5IGNoYXB0ZXIgNV0oaHR0cHM6Ly9wbG90bHktYm9vay5jcHNpZXZlcnQubWUva2V5LWZyYW1lLWFuaW1hdGlvbnMuaHRtbCkuCgpgYGB7cn0KZ2cgPC0gZ2FwbWluZGVyICU+JSBnZ3Bsb3QoYWVzKGxvZyhnZHBQZXJjYXApLCBsb2cobGlmZUV4cCksIGNvbG9yID0gY29udGluZW50KSkgKwogIGdlb21fcG9pbnQoYWVzKHNpemUgPSBwb3AsIGZyYW1lID0geWVhciwgaWRzID0gY291bnRyeSkpIApnZ3Bsb3RseShnZykKYGBgCgo=