Skip to content

ggplotly/plotly point animation with geom_sf? #1362

@StevenMBittner

Description

@StevenMBittner

I am trying to execute this code to overlay a state shapefile over lat-lon coordinates. I am also trying to animate this function with plotly to show change over SznYr (Season-Year combinations). Points will be outside shapefile but it'll be good as a reference.

data structure

df <- structure(list(STATION = c("ER 09", "ER 09", "ER 09", "ER 09", 
"ER 09", "ER 09", "ER 09", "ER 09", "ER 09", "ER 09", "ER 09", 
"ER 09", "ER 09", "ER 09", "ER 09", "ER 09", "ER 09", "ER 09", 
"ER 09", "ER 09", "ER 09", "ER 09", "ER 09", "ER 09", "ER 09", 
"ER 09", "ER 09", "ER 09", "ER 09", "ER 09"), YEAR = c(2004, 
2014, 2009, 2010, 2006, 2010, 2005, 2013, 2012, 2003, 2011, 1999, 
2008, 2002, 2001, 2015, 1999, 2008, 2007, 1998, 2009, 2003, 2002, 
2006, 2014, 2011, 2013, 2000, 2001, 2016), CRUISE = c("Spring", 
"Spring", "Spring", "Summer", "Spring", "Spring", "Summer", "Summer", 
"Summer", "Spring", "Summer", "Summer", "Summer", "Summer", "Spring", 
"Summer", "Spring", "Spring", "Spring", "Spring", "Summer", "Summer", 
"Spring", "Summer", "Summer", "Spring", "Spring", "Summer", "Summer", 
"Summer"), LAKE = c("ER", "ER", "ER", "ER", "ER", "ER", "ER", 
"ER", "ER", "ER", "ER", "ER", "ER", "ER", "ER", "ER", "ER", "ER", 
"ER", "ER", "ER", "ER", "ER", "ER", "ER", "ER", "ER", "ER", "ER", 
"ER"), `SAMPLE DATE` = structure(c(1081555200, 1398384000, 1239840000, 
1281484800, 1144540800, 1270857600, 1123718400, 1376179200, 1344643200, 
1050364800, 1313020800, 933897600, 1218412800, 1028764800, 987292800, 
1439424000, 921110400, 1208908800, 1176076800, 892080000, 1250726400, 
1060387200, 1018224000, 1155340800, 1408060800, 1302652800, 1364947200, 
965347200, 996969600, 1470960000), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), `DAP_ugDW/m3` = c(4.43908045032482, 35.0766788176979, 
14.7357403542112, 3441.21354986824, 11.0250577225057, 3.19190519969587, 
3596.35705179986, 7566.22661157094, 3686.50071576236, 0, 10384.9731071551, 
12838.4952301655, 3384.48839989391, 20751.6373928567, 0, 2793.05327182591, 
1.14104325770947, 0, 0, 0, 111.410355473174, 22083.7651593859, 
0, 21866.7827450416, 8864.58197143975, 0.848223804712927, 19.4903180274715, 
2891.02077157959, 523.660621808397, 9199.92316528261), `Latitude (DD)` = c(42.5383333333333, 
42.5383333333333, 42.5383333333333, 42.5383333333333, 42.5383333333333, 
42.5383333333333, 42.5383333333333, 42.5383333333333, 42.5383333333333, 
42.5383333333333, 42.5383333333333, 42.5383333333333, 42.5383333333333, 
42.5383333333333, 42.5383333333333, 42.5383333333333, 42.5383333333333, 
42.5383333333333, 42.5383333333333, 42.5383333333333, 42.5383333333333, 
42.5383333333333, 42.5383333333333, 42.5383333333333, 42.5383333333333, 
42.5383333333333, 42.5383333333333, 42.5383333333333, 42.5383333333333, 
42.5383333333333), `Longitude (DD)` = c(-79.6166666666667, -79.6166666666667, 
-79.6166666666667, -79.6166666666667, -79.6166666666667, -79.6166666666667, 
-79.6166666666667, -79.6166666666667, -79.6166666666667, -79.6166666666667, 
-79.6166666666667, -79.6166666666667, -79.6166666666667, -79.6166666666667, 
-79.6166666666667, -79.6166666666667, -79.6166666666667, -79.6166666666667, 
-79.6166666666667, -79.6166666666667, -79.6166666666667, -79.6166666666667, 
-79.6166666666667, -79.6166666666667, -79.6166666666667, -79.6166666666667, 
-79.6166666666667, -79.6166666666667, -79.6166666666667, -79.6166666666667
), SznYr = c("2004-Spring", "2014-Spring", "2009-Spring", "2010-Summer", 
"2006-Spring", "2010-Spring", "2005-Summer", "2013-Summer", "2012-Summer", 
"2003-Spring", "2011-Summer", "1999-Summer", "2008-Summer", "2002-Summer", 
"2001-Spring", "2015-Summer", "1999-Spring", "2008-Spring", "2007-Spring", 
"1998-Spring", "2009-Summer", "2003-Summer", "2002-Spring", "2006-Summer", 
"2014-Summer", "2011-Spring", "2013-Spring", "2000-Summer", "2001-Summer", 
"2016-Summer")), .Names = c("STATION", "YEAR", "CRUISE", "LAKE", 
"SAMPLE DATE", "DAP_ugDW/m3", "Latitude (DD)", "Longitude (DD)", 
"SznYr"), row.names = c(NA, 30L), class = "data.frame")

# get state shapefile
library(raster)
library(sf)
us <- getData("GADM", country="USA", level=1)
mich <- c("Michigan")
#convert it to sf object
mich.sf <- st_as_sf(mich)

# plotting code 1 . this works but doesn't include shapefile in code
gg <- ggplot(df, aes(x=`Longitude (DD)`, y=`Latitude (DD)`, color=`DAP_ugDW/m3`)) +
          geom_point(aes(frame = SznYr, ids = STATION)) + scale_color_gradient(low="blue", high="red")
gg2 <- ggplotly(gg, height = 900, width = 700) %>%
  animation_opts(frame = 200,
                 easing = "linear",
                 redraw = FALSE)

# plotting code 2 . does not work or show shapefile that is included in code
gg <- ggplot(df, aes(x=`Longitude (DD)`, y=`Latitude (DD)`, color=`DAP_ugDW/m3`)) +
  geom_point(aes(frame = SznYr, ids = STATION)) + scale_color_gradient(low="blue", high="red") + geom_sf(data=lakes.sf) 

gg2 <- ggplotly(gg, height = 900, width = 700) %>%
  animation_opts(frame = 200,
                 easing = "linear",
                 redraw = FALSE)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions