R/geom_nba.R

Defines functions nbaGrob

Documented in nbaGrob

#' nba geom
#' @author Arie Spirgel
#' @import RCurl
#' @import png
#' @export geom_nba
#'
#' @export

# most of the (original) code is from emoGG https://github.com/dill/emoGG, which I then took
# from https://github.com/ricardo-bion/ggtech

nbaGrob <- function(x, y, size, theme, geom_key = list(
    heat = "https://upload.wikimedia.org/wikipedia/en/thumb/f/fb/Miami_Heat_logo.svg/651px-Miami_Heat_logo.svg.png",
    hawks = "https://upload.wikimedia.org/wikipedia/en/thumb/2/24/Atlanta_Hawks_logo.svg/768px-Atlanta_Hawks_logo.svg.png",
    celtics = "https://upload.wikimedia.org/wikipedia/en/thumb/8/8f/Boston_Celtics.svg/375px-Boston_Celtics.svg.png",
    nets = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Brooklyn_Nets_newlogo.svg/680px-Brooklyn_Nets_newlogo.svg.png",
    hornets = "https://upload.wikimedia.org/wikipedia/en/thumb/c/c4/Charlotte_Hornets_%282014%29.svg/450px-Charlotte_Hornets_%282014%29.svg.png",
    bulls = "https://upload.wikimedia.org/wikipedia/en/thumb/6/67/Chicago_Bulls_logo.svg/306px-Chicago_Bulls_logo.svg.png",
    cavaliers = "https://upload.wikimedia.org/wikipedia/en/thumb/f/f7/Cleveland_Cavaliers_2010.svg/443px-Cleveland_Cavaliers_2010.svg.png",
    mavericks = "https://upload.wikimedia.org/wikipedia/en/thumb/9/97/Dallas_Mavericks_logo.svg/365px-Dallas_Mavericks_logo.svg.png",
    nuggets = "https://upload.wikimedia.org/wikipedia/en/thumb/7/76/Denver_Nuggets.svg/768px-Denver_Nuggets.svg.png",
    pistons = "https://upload.wikimedia.org/wikipedia/en/thumb/1/1e/Detroit_Pistons_logo.svg/450px-Detroit_Pistons_logo.svg.png",
    warriors = "https://upload.wikimedia.org/wikipedia/en/thumb/0/01/Golden_State_Warriors_logo.svg/542px-Golden_State_Warriors_logo.svg.png",
    rockets = "https://upload.wikimedia.org/wikipedia/en/thumb/2/28/Houston_Rockets.svg/615px-Houston_Rockets.svg.png",
    pacers = "https://upload.wikimedia.org/wikipedia/en/thumb/1/1b/Indiana_Pacers.svg/768px-Indiana_Pacers.svg.png",
    clippers = "https://upload.wikimedia.org/wikipedia/en/thumb/b/bb/Los_Angeles_Clippers_%282015%29.svg/768px-Los_Angeles_Clippers_%282015%29.svg.png",
    lakers = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/LosAngeles_Lakers_logo.svg/768px-LosAngeles_Lakers_logo.svg.png",
    bucks = "https://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Milwaukee_Bucks_logo.svg/726px-Milwaukee_Bucks_logo.svg.png",
    timberwolves = "https://upload.wikimedia.org/wikipedia/en/d/d2/Minnesota_Timberwolves_logo.png",
    grizzlies = "https://upload.wikimedia.org/wikipedia/en/thumb/f/f1/Memphis_Grizzlies.svg/304px-Memphis_Grizzlies.svg.png",
    pelicans = "https://upload.wikimedia.org/wikipedia/en/thumb/0/0d/New_Orleans_Pelicans_logo.svg/768px-New_Orleans_Pelicans_logo.svg.png",
    knicks = "https://upload.wikimedia.org/wikipedia/en/thumb/2/25/New_York_Knicks_logo.svg/768px-New_York_Knicks_logo.svg.png",
    thunder = "https://upload.wikimedia.org/wikipedia/en/thumb/5/5d/Oklahoma_City_Thunder.svg/375px-Oklahoma_City_Thunder.svg.png",
    magic = "https://upload.wikimedia.org/wikipedia/en/8/85/Orlando_magic_logo.png",
    `76ers` = "https://upload.wikimedia.org/wikipedia/en/b/ba/Philadelphia_76ers_Logo.png",
    suns = "https://upload.wikimedia.org/wikipedia/en/thumb/d/dc/Phoenix_Suns_logo.svg/768px-Phoenix_Suns_logo.svg.png",
    trailblazers = "https://upload.wikimedia.org/wikipedia/en/thumb/7/74/Portland_Trail_Blazers.svg/307px-Portland_Trail_Blazers.svg.png",
    kings = "https://upload.wikimedia.org/wikipedia/en/thumb/c/c7/SacramentoKings.svg/525px-SacramentoKings.svg.png",
    spurs = "https://upload.wikimedia.org/wikipedia/en/thumb/a/a2/San_Antonio_Spurs.svg/768px-San_Antonio_Spurs.svg.png",
    raptors = "https://upload.wikimedia.org/wikipedia/en/1/1e/Toronto_Raptors_logo_2015-16.png",
    jazz = "https://upload.wikimedia.org/wikipedia/en/c/c2/Utah_Jazz_primary_logo_2016%E2%80%93present.png",
    wizards = "https://upload.wikimedia.org/wikipedia/en/thumb/0/02/Washington_Wizards_logo.svg/768px-Washington_Wizards_logo.svg.png"
    )) {

   img <- as.raster(png::readPNG(RCurl::getURLContent(geom_key[[theme[[1]]]])))

   grid::rasterGrob(x             = x,
              y             = y,
              image         = img,
              default.units = "native",
              height        = size,
              width         = size*0.5)
}



Geomnba <- ggplot2::ggproto("Geomnba", ggplot2::Geom,

  #draw_panel = function(., data, scales, coordinates, ...) {
  draw_panel = function(data, panel_scales, coord, na.rm = FALSE) {
    coords = coord$transform(data, panel_scales)
    ggplot2:::ggname("geom_nba",
      nbaGrob(coords$x, coords$y, coords$size, coords$theme)
    )
  },

  non_missing_aes = c("size", "theme"),
  required_aes = c("x", "y"),
  default_aes = ggplot2::aes(size=0.2, theme="airbnb"),

  icon = function(.){}, # a grob representing the geom for the webpage

  desc_params = list( # description of the (optional) parameters of draw
     ),

  seealso = list(
    geom_point = ggplot2::GeomPoint$desc
  ),

  examples = function(.) {
  }
)



geom_nba <- function(mapping = NULL, data = NULL, stat = "identity",
                       position = "identity", na.rm = FALSE,
                       show.legend = NA, inherit.aes = TRUE, ...) {
  ggplot2::layer(
    data = data,
    mapping = mapping,
    stat = stat,
    geom = Geomnba,
    position = position,
    show.legend = show.legend,
    inherit.aes = inherit.aes,
    params = list(
      na.rm = na.rm,
      ...
    )
  )
}
spirgel/ggnba documentation built on May 5, 2019, 5:54 p.m.