True way for array months - r

I'm new in R.
I've data about about deep sea species and my sampling from July 2016 to July 2017.
I want take histogram by month with using ggplot.
ggplot create histogram by monthly but sort the months alphabetically.
How can I create a histogram start from July 2016 ?
Thank you.
My code:
ggplot(af, aes(x=cl)) +\
geom_histogram(binwidth=2, color="red") +\
facet_wrap(~date, ncol=2, nrow=7) +\
scale_x_continuous(name="Length Class (mm)") +\
scale_y_continuous(name ="Number of Specimens")
af: Species which is interested in study
cl: Carapace length
structure(list(date = structure(c(NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_,
NA_integer_, NA_integer_), .Label = c("july 2016", "aug 2016 ",
"sept 2016", "oct 2016", "nov 2016", "dec 2016", "jan 2017",
"feb 2017", "march 2017", "apr 2017", "may 2017", "june 2017",
"july 2017"), class = "factor"), cl = c(38.33, 32.47, 33.52,
38.33, 34.84, 34.66, 31.67, 47.87, 36.46, 52, 41, 40.41, 32.71,
35.5, 36.56)), row.names = c(NA, 15L), class = "data.frame")

Related

How can I reshape date column in a dataframe?

I want to reshape my Date column in the same months-wise. For example, the first 12 rows in the Date column of the dataframe contains a character of all the months in the year 2001 and the respective year itself. The next rows are the same, until the year 2017.
Therefore. I want to reshape my data like the following. For example, I want all Januaries of the all years to be in the first rows of Date column, then all februaries in the next rows, Marches of the all years and so on, until December of all years (2001-2017)
I need like this format:
1 2001 1
2 2002 1
3 2003 1
4 2004 1
5 2005 1
6 2006 1
7 2007 1
8 2008 1
9 2009 1
10 2010 1
11 2011 1
12 2012 1
13 2013 1
14 2014 1
15 2015 1
16 2016 1
17 2017 1
18 2001 2
19 2002 2
20 2003 2
21 2004 2
22 2005 2
23 2006 2
24 2007 2
This is my dataframe I generated using dput()
#load packages that might be required
> library(tidyverse)
> library(xts)
> # Read NDVI
> NDVI <- read.csv("processed//NDVI.csv")
> dput(NDVI)
structure(list(Date = c("Jan 1, 2001", "Feb 1, 2001", "Mar 1, 2001",
"Apr 1, 2001", "May 1, 2001", "Jun 1, 2001", "Jul 1, 2001", "Aug 1, 2001",
"Sep 1, 2001", "Oct 1, 2001", "Nov 1, 2001", "Dec 1, 2001", "Jan 1, 2002",
"Feb 1, 2002", "Mar 1, 2002", "Apr 1, 2002", "May 1, 2002", "Jun 1, 2002",
"Jul 1, 2002", "Aug 1, 2002", "Sep 1, 2002", "Oct 1, 2002", "Nov 1, 2002",
"Dec 1, 2002", "Jan 1, 2003", "Feb 1, 2003", "Mar 1, 2003", "Apr 1, 2003",
"May 1, 2003", "Jun 1, 2003", "Jul 1, 2003", "Aug 1, 2003", "Sep 1, 2003",
"Oct 1, 2003", "Nov 1, 2003", "Dec 1, 2003", "Jan 1, 2004", "Feb 1, 2004",
"Mar 1, 2004", "Apr 1, 2004", "May 1, 2004", "Jun 1, 2004", "Jul 1, 2004",
"Aug 1, 2004", "Sep 1, 2004", "Oct 1, 2004", "Nov 1, 2004", "Dec 1, 2004",
"Jan 1, 2005", "Feb 1, 2005", "Mar 1, 2005", "Apr 1, 2005", "May 1, 2005",
"Jun 1, 2005", "Jul 1, 2005", "Aug 1, 2005", "Sep 1, 2005", "Oct 1, 2005",
"Nov 1, 2005", "Dec 1, 2005", "Jan 1, 2006", "Feb 1, 2006", "Mar 1, 2006",
"Apr 1, 2006", "May 1, 2006", "Jun 1, 2006", "Jul 1, 2006", "Aug 1, 2006",
"Sep 1, 2006", "Oct 1, 2006", "Nov 1, 2006", "Dec 1, 2006", "Jan 1, 2007",
"Feb 1, 2007", "Mar 1, 2007", "Apr 1, 2007", "May 1, 2007", "Jun 1, 2007",
"Jul 1, 2007", "Aug 1, 2007", "Sep 1, 2007", "Oct 1, 2007", "Nov 1, 2007",
"Dec 1, 2007", "Jan 1, 2008", "Feb 1, 2008", "Mar 1, 2008", "Apr 1, 2008",
"May 1, 2008", "Jun 1, 2008", "Jul 1, 2008", "Aug 1, 2008", "Sep 1, 2008",
"Oct 1, 2008", "Nov 1, 2008", "Dec 1, 2008", "Jan 1, 2009", "Feb 1, 2009",
"Mar 1, 2009", "Apr 1, 2009", "May 1, 2009", "Jun 1, 2009", "Jul 1, 2009",
"Aug 1, 2009", "Sep 1, 2009", "Oct 1, 2009", "Nov 1, 2009", "Dec 1, 2009",
"Jan 1, 2010", "Feb 1, 2010", "Mar 1, 2010", "Apr 1, 2010", "May 1, 2010",
"Jun 1, 2010", "Jul 1, 2010", "Aug 1, 2010", "Sep 1, 2010", "Oct 1, 2010",
"Nov 1, 2010", "Dec 1, 2010", "Jan 1, 2011", "Feb 1, 2011", "Mar 1, 2011",
"Apr 1, 2011", "May 1, 2011", "Jun 1, 2011", "Jul 1, 2011", "Aug 1, 2011",
"Sep 1, 2011", "Oct 1, 2011", "Nov 1, 2011", "Dec 1, 2011", "Jan 1, 2012",
"Feb 1, 2012", "Mar 1, 2012", "Apr 1, 2012", "May 1, 2012", "Jun 1, 2012",
"Jul 1, 2012", "Aug 1, 2012", "Sep 1, 2012", "Oct 1, 2012", "Nov 1, 2012",
"Dec 1, 2012", "Jan 1, 2013", "Feb 1, 2013", "Mar 1, 2013", "Apr 1, 2013",
"May 1, 2013", "Jun 1, 2013", "Jul 1, 2013", "Aug 1, 2013", "Sep 1, 2013",
"Oct 1, 2013", "Nov 1, 2013", "Dec 1, 2013", "Jan 1, 2014", "Feb 1, 2014",
"Mar 1, 2014", "Apr 1, 2014", "May 1, 2014", "Jun 1, 2014", "Jul 1, 2014",
"Aug 1, 2014", "Sep 1, 2014", "Oct 1, 2014", "Nov 1, 2014", "Dec 1, 2014",
"Jan 1, 2015", "Feb 1, 2015", "Mar 1, 2015", "Apr 1, 2015", "May 1, 2015",
"Jun 1, 2015", "Jul 1, 2015", "Aug 1, 2015", "Sep 1, 2015", "Oct 1, 2015",
"Nov 1, 2015", "Dec 1, 2015", "Jan 1, 2016", "Feb 1, 2016", "Mar 1, 2016",
"Apr 1, 2016", "May 1, 2016", "Jun 1, 2016", "Jul 1, 2016", "Aug 1, 2016",
"Sep 1, 2016", "Oct 1, 2016", "Nov 1, 2016", "Dec 1, 2016", "Jan 1, 2017",
"Feb 1, 2017", "Mar 1, 2017", "Apr 1, 2017", "May 1, 2017", "Jun 1, 2017",
"Jul 1, 2017", "Aug 1, 2017", "Sep 1, 2017", "Oct 1, 2017", "Nov 1, 2017",
"Dec 1, 2017"), NDVI = c(0.722, 0.418, 0.435, 0.568, 0.616, 0.75,
0.62, 0.516, 0.389, 0.484, 0.65, 0.7, 0.533, 0.327, 0.279, 0.43,
0.701, 0.797, 0.748, 0.569, 0.597, 0.662, 0.794, 0.706, 0.537,
0.338, 0.404, 0.461, 0.759, 0.76, 0.578, 0.408, 0.56, 0.62, 0.684,
0.785, 0.539, 0.442, 0.307, 0.461, 0.593, 0.739, 0.674, 0.495,
0.603, 0.712, 0.776, 0.665, 0.522, 0.333, 0.398, 0.28, 0.713,
0.746, 0.757, 0.549, 0.711, 0.685, 0.693, 0.716, 0.617, 0.476,
0.407, 0.325, 0.555, 0.757, 0.622, 0.544, 0.452, 0.586, 0.761,
0.649, 0.635, 0.472, 0.351, 0.402, 0.662, 0.757, 0.712, 0.69,
0.618, 0.632, 0.797, 0.778, 0.543, 0.401, 0.393, 0.556, 0.68,
0.784, 0.659, 0.654, 0.412, 0.653, 0.694, 0.727, 0.715, 0.55,
0.641, 0.443, 0.709, 0.818, 0.646, 0.59, 0.39, 0.562, 0.67, 0.56,
0.476, 0.312, 0.349, 0.405, 0.705, 0.766, 0.665, 0.577, 0.614,
0.518, 0.718, 0.779, 0.792, 0.547, 0.585, 0.373, 0.605, 0.715,
0.779, 0.758, 0.751, 0.77, 0.752, 0.805, 0.521, 0.471, 0.561,
0.595, 0.688, 0.74, 0.77, 0.69, 0.704, 0.613, 0.653, 0.803, 0.63,
0.472, 0.589, 0.512, 0.562, 0.699, 0.814, 0.637, 0.395, 0.462,
0.419, 0.742, 0.498, 0.35, 0.308, 0.321, 0.597, 0.677, 0.729,
0.526, 0.394, 0.567, 0.806, 0.752, 0.703, 0.495, 0.453, 0.48,
0.593, 0.731, 0.799, 0.619, 0.403, 0.396, 0.556, 0.743, 0.717,
0.504, 0.408, 0.356, 0.215, 0.68, 0.487, 0.594, 0.392, 0.566,
0.547, 0.632, 0.604, 0.528, 0.424, 0.627, 0.448, 0.788, 0.764,
0.592, 0.517, 0.274, 0.577, 0.754)), class = "data.frame", row.names = c(NA,
-204L))
library(dplyr)
library(tidyr)
library(lubridate)
df %>%
mutate(Date = mdy(Date)) %>%
separate(Date, into = c("year", "month", "day"), remove = FALSE) %>%
arrange(month, day, year)
# Date year month day NDVI
# 1 2001-01-01 2001 01 01 0.722
# 2 2002-01-01 2002 01 01 0.533
# 3 2003-01-01 2003 01 01 0.537
# 4 2004-01-01 2004 01 01 0.539
# 5 2005-01-01 2005 01 01 0.522
# 6 2006-01-01 2006 01 01 0.617
# ...
This is not generally called a "reshaping" operation - this is sorting/ordering/arranging rows. Reshaping/pivoting is when something that is a column becomes a row, or vice versa.

Merging of two datasets of different lenghts

I'm trying to merge two datasets I have.
df1:
day
month
year
lon
lat
month-year
3
5
2009
5.7
53.9
May 2009
8
9
2004
6.9
52.6
Sep 2004
15
9
2004
3.8
50.4
Sep 2004
5
5
2009
2.7
51.2
May 2009
28
7
2005
14.8
62.4
Jul 2005
18
9
2004
5.1
52.5
Sep 2004
df2:
nao-value
sign
month-year
- 2.1
Negative
Sep 2004
1.3
Positive
Jul 2005
- 1.1
Negative
May 2009
I want to merge this to add the NAO value for each month and year in the occurrence data, meaning i want the NAO value for each specific month repeated for all registrations of that month in the occurrence data.
Problem is I cannot get the NAO values to line up where it should by the occurrence data, its either placed just repetitive and not aligned with the date it should, given as month-year.x and month-year.y ,or it is given back as NA value.
I have tried a few different approaches:
df3 <- merge(df1, df2, by="month-year")
df3 <- merge(cbind(df1, X=rownames(df1)), cbind(df2, variable=rownames(df2)))
df3 <- merge(df1,df2, by ="month-year", all.x = TRUE,all.y=TRUE, sort = FALSE)
df3 <- merge(df1, df2, by=intersect(df1$month-year(df1), df2$month-year(df2)))
But not of those give the result I desire.
Edit to include dput:
dput(head(df1, 10)) :
structure(list(Day = c(29, 2, 14, 31, 16, 7, 25, 12, 21, 22),
Month = c(7, 7, 7, 8, 8, 7, 8, 6, 6, 9), Year = c(2010, 2015,
2010, 2018, 2016, 2018, 2019, 2004, 2015, 2019), Lon = c(-6.155014,
-5.820868, -5.509842, -5.495277, -5.469389, -5.469389, -5.469389,
-5.466995, -5.461942, -5.457127), Lat = c(59.09478, 59.125228,
57.959196, 57.96022, 57.986825, 57.986825, 57.986825, 57.874527,
57.95972, 58.07697), Date = c("Jul 2010", "Jul 2015", "Jul 2010",
"Aug 2018", "Aug 2016", "Jul 2018", "Aug 2019", "Jun 2004",
"Jun 2015", "Sep 2019")), row.names = c(NA, -10L), class =
c("tbl_df",
"tbl", "data.frame"))
dput(head(df2, 10)) :
structure(list(NAO = c(1.04, 1.41, 1.46, 2, -1.53, -0.02, 0.53,
0.97, 1.06, 0.23), Sign = c("Positive", "Positive", "Positive",
"Positive", "Negative", "Negative", "Positive", "Positive",
"Positive",
"Positive"), Date = c("jan 1990", "feb 1990", "mar 1990", "apr 1990",
"mai 1990", "jun 1990", "jul 1990", "aug 1990", "sep 1990", "okt
1990"
)), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))
merge function is case sensitive. You have different cases in two dataframes that you are merging. Make the case in both the dataframe same and then perform the merge. Try -
result <- merge(transform(df1, Date = tolower(Date)), df2, by = 'Date')
Using tidyverse
library(dplyr)
df1 %>%
mutate(Date = tolower(Date)) %>%
inner_join(df2, by = 'Date')

How to show year only where necessary on date axis

I'm writing code in R that uses ggplot2 to generate several bar graphs based on test data from several trainings, spanning (at present) about a year, like the following:
Currently all the dates are formatted "mon DD YYYY" ("%b %d %Y" as a Date format):
c("Oct 05 2020", "Nov 02 2020", "Nov 30 2020", "Jan 11 2021", "Feb 22 2021",
"Mar 08 2021", "Mar 29 2021", "Apr 12 2021", "May 03 2021", "May 17 2021")
But I'd like to only display the year on the first date, and any subsequent dates that are the first date in a year:
c("Oct 05 2020", "Nov 02", "Nov 30", "Jan 11 2021", "Feb 22", "Mar 08", "Mar 29",
"Apr 12", "May 03", "May 17")
Is there a way to do this, either via some kind of filtering of the Date column or something in ggplot?
We could convert the vector of date into Date class ('v1'), extract the 'Year' component, create a logical vector with duplicated, use that index ('i1') to replace the values in the original vector with formatted Dates from 'v2'
v2 <- as.Date(v1, '%b %d %Y')
i1 <- duplicated(format(v2, '%Y'))
v1[i1] <- format(v2[i1], '%b %d')
-ouptut
v1
[1] "Oct 05 2020" "Nov 02" "Nov 30"
[4] "Jan 11 2021" "Feb 22" "Mar 08" "Mar 29"
[8] "Apr 12" "May 03" "May 17"
data
v1 <- c("Oct 05 2020", "Nov 02 2020", "Nov 30 2020", "Jan 11 2021", "Feb 22 2021",
"Mar 08 2021", "Mar 29 2021", "Apr 12 2021", "May 03 2021", "May 17 2021")

Ordering grouped bars using ggplot

I'm trying to order each groups in ascending order of the 'first' time point but can't seem to override the alphabetical ordering
ggplot(total, aes(fill=reorder(timepoint, sumofpct), y=sumofpct, x=CountryCode))
+ geom_bar(position="dodge", stat="identity")+scale_fill_manual(values = c("violetred3",'steelblue'))
+ geom_text(aes(label=sumofpct), hjust=1, color='black',size=5, position=position_dodge(width=0.9))
+ xlab('')+ ylab('Survey response (%)')
+ theme_classic()+theme(axis.text = element_text(size=25),axis.title=element_text(size=20),legend.text = element_text(size = 25))+coord_flip()
Is there a way to order this so that it is in ascending order of 'first'?
Data structure
structure(list(CountryCode = c("AUS", "CAN", "DEU", "DNK", "ESP",
"FRA", "ITA", "JPN", "KOR", "NHL", "NOR", "SGP", "SWE", "UK",
"AUS", "CAN", "DEU", "DNK", "ESP", "FRA", "ITA", "JPN", "KOR",
"NHL", "NOR", "SGP", "SWE", "UK"), Date = c("Mar 30 - Apr 05 (2010)",
"Mar 30 - Apr 05 (2010)", "Mar 30 - Apr 05 (2010)", "Apr 06 - Apr 12 (2010)",
"Mar 30 - Apr 05 (2010)", "Mar 30 - Apr 05 (2010)", "Mar 30 - Apr 05 (2010)",
"Mar 30 - Apr 05 (2010)", "Mar 30 - Apr 05 (2010)", "Apr 06 - Apr 12 (2010)",
"Apr 06 - Apr 12 (2010)", "Mar 30 - Apr 05 (2010)", "Mar 30 - Apr 05 (2010)",
"Mar 30 - Apr 05 (2010)", "Mar 22 - Mar 28 (2000)", "Mar 22 - Mar 28 (2000)",
"Apr 05 - Apr 11 (2000)", "Mar 22 - Mar 28 (2000)", "Apr 05 - Apr 11 (2000)",
"Apr 05 - Apr 11 (2000)", "Apr 05 - Apr 11 (2000)", "Mar 29 - Apr 04 (2000)",
"Mar 22 - Mar 28 (2000)", "Feb 08 - Feb 14 (2000)", "Mar 22 - Mar 28 (2000)",
"Mar 22 - Mar 28 (2000)", "Apr 05 - Apr 11 (2000)", "Apr 05 - Apr 11 (2000)"
), sumofpct = c(94, 95, 92, 90, 96, 95, 97, 83, 95, 89, 92, 91,
91, 96, 89, 95, 90, 89, 95, 93, 95, 84, 94, 85, 91, 86, 88, 93
), timepoint = c("first", "first", "first", "first", "first",
"first", "first", "first", "first", "first", "first", "first",
"first", "first", "last", "last", "last", "last", "last", "last",
"last", "last", "last", "last", "last", "last", "last", "last"
)), row.names = c(NA, -28L), groups = structure(list(CountryCode = c("AUS",
"CAN", "DEU", "DNK", "ESP", "FRA", "ITA", "JPN", "KOR", "NHL",
"NOR", "SGP", "SWE", "UK"), .rows = structure(list(c(1L, 15L),
c(2L, 16L), c(3L, 17L), c(4L, 18L), c(5L, 19L), c(6L, 20L
), c(7L, 21L), c(8L, 22L), c(9L, 23L), c(10L, 24L), c(11L,
25L), c(12L, 26L), c(13L, 27L), c(14L, 28L)), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = c(NA, 14L), class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
Thanks!
you can try
ggplot(df, aes(x=reorder(CountryCode, sumofpct, max), y=sumofpct, fill=factor(timepoint, levels = c("last", "first")))) +
geom_col(position = "dodge") + # recommended over geom_bar
geom_text(aes(label=sumofpct), hjust=1, color='black',size=5, position=position_dodge(width=0.9)) +
scale_fill_manual("timepoint", values = c("violetred3",'steelblue'), guide = guide_legend(reverse = TRUE))+
coord_flip()
Instead of reorder you can use forcats::fct_reorder2(CountryCode, timepoint=="first", -sumofpct)

R Highcharter map with hc_motion

I am trying to use the highcharter in R to create a motion map like this one http://jkunst.com/r/adding-motion-to-choropleths/
But I have a problem: the data is not visualized
df<-structure(list(fips = c("ARG", "ARG", "ARG", "ARG", "ARG", "ARG",
"ARG", "ARG", "ARG", "ARG", "ARG", "ARG", "ARG", "ARG", "ARG",
"ARG", "ARG", "ARG", "ARG", "ARG", "ARG", "ARG", "ARG", "ARG",
"ARG", "ARG", "ARG", "ARG", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS", "AUS",
"AUS", "AUS", "AUS", "AUS", "AUS", "CAN", "CAN", "CAN", "CAN",
"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN",
"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "CAN",
"CAN", "CAN", "CAN", "CAN", "CAN", "CAN", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU",
"DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "DEU", "GBR", "GBR",
"GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "GBR",
"GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "GBR",
"GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "GBR", "ITA",
"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA",
"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA",
"ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA", "ITA",
"ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU",
"ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU",
"ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU", "ROU",
"ROU", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS",
"RUS", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS",
"RUS", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS", "RUS",
"RUS", "RUS", "USA", "USA", "USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA", "USA",
"USA", "USA", "USA"), sm = c("Sep 2016", "Oct 2016", "Nov 2016",
"Dec 2016", "Jan 2017", "Feb 2017", "Mar 2017", "Apr 2017", "May 2017",
"Jun 2017", "Jul 2017", "Aug 2017", "Sep 2017", "Oct 2017", "Nov 2017",
"Dec 2017", "Jan 2018", "Feb 2018", "Mar 2018", "Apr 2018", "May 2018",
"Jun 2018", "Jul 2018", "Aug 2018", "Sep 2018", "Oct 2018", "Nov 2018",
"Dec 2018", "Sep 2016", "Oct 2016", "Nov 2016", "Dec 2016", "Jan 2017",
"Feb 2017", "Mar 2017", "Apr 2017", "May 2017", "Jun 2017", "Jul 2017",
"Aug 2017", "Sep 2017", "Oct 2017", "Nov 2017", "Dec 2017", "Jan 2018",
"Feb 2018", "Mar 2018", "Apr 2018", "May 2018", "Jun 2018", "Jul 2018",
"Aug 2018", "Sep 2018", "Oct 2018", "Nov 2018", "Dec 2018", "Sep 2016",
"Oct 2016", "Nov 2016", "Dec 2016", "Jan 2017", "Feb 2017", "Mar 2017",
"Apr 2017", "May 2017", "Jun 2017", "Jul 2017", "Aug 2017", "Sep 2017",
"Oct 2017", "Nov 2017", "Dec 2017", "Jan 2018", "Feb 2018", "Mar 2018",
"Apr 2018", "May 2018", "Jun 2018", "Jul 2018", "Aug 2018", "Sep 2018",
"Oct 2018", "Nov 2018", "Dec 2018", "Sep 2016", "Oct 2016", "Nov 2016",
"Dec 2016", "Jan 2017", "Feb 2017", "Mar 2017", "Apr 2017", "May 2017",
"Jun 2017", "Jul 2017", "Aug 2017", "Sep 2017", "Oct 2017", "Nov 2017",
"Dec 2017", "Jan 2018", "Feb 2018", "Mar 2018", "Apr 2018", "May 2018",
"Jun 2018", "Jul 2018", "Aug 2018", "Sep 2018", "Oct 2018", "Nov 2018",
"Dec 2018", "Sep 2016", "Oct 2016", "Nov 2016", "Dec 2016", "Jan 2017",
"Feb 2017", "Mar 2017", "Apr 2017", "May 2017", "Jun 2017", "Jul 2017",
"Aug 2017", "Sep 2017", "Oct 2017", "Nov 2017", "Dec 2017", "Jan 2018",
"Feb 2018", "Mar 2018", "Apr 2018", "May 2018", "Jun 2018", "Jul 2018",
"Aug 2018", "Sep 2018", "Oct 2018", "Nov 2018", "Dec 2018", "Sep 2016",
"Oct 2016", "Nov 2016", "Dec 2016", "Jan 2017", "Feb 2017", "Mar 2017",
"Apr 2017", "May 2017", "Jun 2017", "Jul 2017", "Aug 2017", "Sep 2017",
"Oct 2017", "Nov 2017", "Dec 2017", "Jan 2018", "Feb 2018", "Mar 2018",
"Apr 2018", "May 2018", "Jun 2018", "Jul 2018", "Aug 2018", "Sep 2018",
"Oct 2018", "Nov 2018", "Dec 2018", "Sep 2016", "Oct 2016", "Nov 2016",
"Dec 2016", "Jan 2017", "Feb 2017", "Mar 2017", "Apr 2017", "May 2017",
"Jun 2017", "Jul 2017", "Aug 2017", "Sep 2017", "Oct 2017", "Nov 2017",
"Dec 2017", "Jan 2018", "Feb 2018", "Mar 2018", "Apr 2018", "May 2018",
"Jun 2018", "Jul 2018", "Aug 2018", "Sep 2018", "Oct 2018", "Nov 2018",
"Dec 2018", "Sep 2016", "Oct 2016", "Nov 2016", "Dec 2016", "Jan 2017",
"Feb 2017", "Mar 2017", "Apr 2017", "May 2017", "Jun 2017", "Jul 2017",
"Aug 2017", "Sep 2017", "Oct 2017", "Nov 2017", "Dec 2017", "Jan 2018",
"Feb 2018", "Mar 2018", "Apr 2018", "May 2018", "Jun 2018", "Jul 2018",
"Aug 2018", "Sep 2018", "Oct 2018", "Nov 2018", "Dec 2018", "Sep 2016",
"Oct 2016", "Nov 2016", "Dec 2016", "Jan 2017", "Feb 2017", "Mar 2017",
"Apr 2017", "May 2017", "Jun 2017", "Jul 2017", "Aug 2017", "Sep 2017",
"Oct 2017", "Nov 2017", "Dec 2017", "Jan 2018", "Feb 2018", "Mar 2018",
"Apr 2018", "May 2018", "Jun 2018", "Jul 2018", "Aug 2018", "Sep 2018",
"Oct 2018", "Nov 2018", "Dec 2018"), value = c(0, 13, 1397, 12134,
6938, 13193, 6947, 6990, 7112, 7233, 13838, 18109, 9700, 19612,
18048, 6441, 7528, 9947, 8073, 5862, 5991, 5501, 6294, 6960,
5350, 4479, 3612, 3143, 0, 12845, 28060, 35813, 37810, 35687,
39469, 37079, 34033, 29262, 31483, 29198, 22719, 19749, 17035,
18740, 19646, 16118, 18970, 18930, 23074, 22650, 25215, 23299,
21329, 19246, 20893, 17106, 0, 11964, 33654, 54440, 51427, 55324,
51136, 41176, 40035, 33106, 34155, 34207, 26175, 21376, 16997,
17213, 18211, 15071, 17266, 15598, 15431, 16155, 16082, 18322,
17276, 17654, 17282, 14001, 0, 737, 3225, 9009, 9324, 9780, 7361,
7584, 12033, 24794, 25236, 27493, 27189, 20672, 17579, 17706,
19280, 17461, 18950, 14288, 15485, 15241, 15148, 16124, 14720,
15279, 16888, 13580, 0, 4020, 21926, 27982, 32928, 39744, 46413,
34679, 35026, 32160, 33611, 33234, 29394, 23364, 20977, 23407,
26501, 21561, 23497, 20090, 21115, 18817, 18255, 21492, 21852,
19908, 18862, 16447, 0, 218, 2611, 8126, 5907, 10862, 5104, 4956,
13169, 22457, 25120, 18480, 15580, 14720, 13146, 16750, 16321,
18067, 15336, 13460, 12949, 9010, 10691, 12153, 13791, 16114,
12893, 10122, 0, 60, 1143, 4251, 3754, 6211, 3291, 2570, 5673,
8171, 9279, 12914, 9675, 7521, 5621, 9473, 7104, 12808, 10212,
8591, 6588, 5055, 6374, 6811, 8072, 11054, 9431, 9558, 0, 122,
1004, 2713, 2554, 2642, 3946, 4355, 3526, 3945, 3792, 5631, 7642,
11354, 13887, 12825, 16926, 15920, 14848, 13762, 13429, 10786,
11194, 11214, 9251, 11578, 13808, 14115, 2, 43253, 213319, 332907,
366366, 368012, 392814, 302207, 283924, 260065, 274796, 269966,
235781, 190387, 166872, 195390, 207261, 166208, 176403, 178703,
192598, 191750, 207203, 211225, 184818, 192932, 214297, 179867
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-252L))
my_ds <- df %>%
group_by(fips) %>%
do(item = list(
fips = first(.$fips),
sequence = .$value,
value = first(.$value))) %>%
.$item
url <- "https://code.highcharts.com/mapdata/custom/world.js"
tmpfile <- tempfile(fileext = ".json")
download.file(url, tmpfile)
us <- readLines(tmpfile)
us <- gsub(".* = ", "", us)
map <- jsonlite::fromJSON(us, simplifyVector = FALSE)
highchart(type = "map") %>%
hc_add_series(data = my_ds,
mapData = map,
joinBy = "fips",
borderWidth = 0.01) %>%
hc_colorAxis(stops = color_stops()) %>%
hc_title(text = "How the Epidemic of Drug Overdose Deaths Ripples") %>%
hc_legend(layout = "vertical", reversed = TRUE,
floating = TRUE, align = "right") %>%
hc_add_theme(hc_theme_smpl()) %>%
hc_motion(
enabled = TRUE,
axisLabel = "year",
labels = unique(as.character(df$sm)),
series = 0,
updateIterval = 50,
magnet = list(
round = "floor",
step = 0.1
)
)
The issue is that the map data of the world you use has no fips (these are US county codes) so joinBy="fips" cannot work the way you expect it to.
The country codes of your dataset correspond to the worldmaps iso-a3 codes. If you use these instead of fips it will work as expected:
my_ds <- df %>% rename(`iso-a3` = fips) %>%
group_by(`iso-a3`) %>%
do(item = list(
`iso-a3` = first(.$`iso-a3`),
sequence = .$value,
value = first(.$value))) %>%
.$item
highchart(type = "map") %>%
hc_add_series(data = my_ds,
mapData = map,
joinBy = "iso-a3",
borderWidth = 0.01) %>%
hc_colorAxis(stops = color_stops()) %>%
hc_title(text = "How the Epidemic of Drug Overdose Deaths Ripples") %>%
hc_legend(layout = "vertical", reversed = TRUE,
floating = TRUE, align = "right") %>%
hc_add_theme(hc_theme_smpl()) %>%
hc_motion(
enabled = TRUE,
axisLabel = "year",
labels = unique(as.character(df$sm)),
series = 0,
updateIterval = 50,
magnet = list(
round = "floor",
step = 0.1
)
)

Resources