GithubHelp home page GithubHelp logo

dreamrs / topogram Goto Github PK

View Code? Open in Web Editor NEW
51.0 6.0 10.0 11.99 MB

R htmlwidget for cartogram-chart

Home Page: https://dreamrs.github.io/topogram/

License: Other

R 84.40% JavaScript 14.71% CSS 0.89%
r htmlwidgets maps

topogram's Introduction

topogram

Cartogram htmlwidget for visualizing geographical data by distorting a TopoJson topology, using cartogram-chart

Project Status: Active – The project has reached a stable, usable state and is being actively developed. R-CMD-check Codecov test coverage

Installation

Install from GitHub:

remotes::install_github("dreamRs/topogram")

Overview

Created with:

library(topogram)
world %>% 
  topogram( 
    value = "pop_est", 
    label = "{name}: {format(pop_est, big.mark = ',')}",
    palette = scales::col_bin("viridis", bins = 20, domain = NULL)
  ) %>% 
  topogram_legend(
    title = "Population",
    formatter = scales::label_comma()
  ) %>% 
  topogram_labs(
    title = "World population",
    subtitle = "Population estimate for 2017",
    caption = "Data source: NaturalEarth"
  )

More examples in the {pkgdown} website

Development

This package use {packer} to manage JavaScript assets, see packer's documentation for more.

Install nodes modules with:

packer::npm_install()

Modify srcjs/widgets/topogram.js, then run:

packer::bundle()

Re-install R package and try topogram() functions.

topogram's People

Contributors

amrrs avatar davidgohel avatar gusy avatar mfanny avatar pvictor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

topogram's Issues

New Zealand maps

Would it be possible to add New Zealand maps? I tried to have a go myself, but the topojson files I created threw errors.

There are shape files available from Statistics NZ

I grabbed the "New Zealand 2017 clipped generalised" file to get territorial authorities (TA) and regional councils (REGC), and "New Zealand Electoral Districts 2014" to get the general (GED) and Māori (MED) electorates, as we've just had an election (though annoyingly these are to the 12 nautical mile boundary at the coast).

consider geojsonsf

I see you're using geojsonio to convert sf objects to GeoJSON. Would you consider using geojonsf to improve speed?

Hopefully in this benchmark I'm replicating what you're doing inside topogram

library(microbenchmark)
library(geojsonsf)
library(geojsonio)

microbenchmark(
  
  geojsonsf = {
    shape$id <- 1:nrow(shape)
    sf_geojson( shape )
  },
  geojsonio = {
    geo_list <- geojson_list(input = shape)
    for (i in seq_along(geo_list$features)) {
      geo_list$features[[i]]$id <- i - 1
      geo_list$features[[i]]$properties$id <- i - 1
    }
    geo_json <- geojson_json(input = geo_list)
  },
  times = 5
  
)
# Unit: milliseconds
# expr        min         lq       mean     median         uq        max neval
# geojsonsf   1.955478   2.078431   2.172361   2.126749   2.226844   2.474302     5
# geojsonio 235.419525 239.354627 241.348199 240.610821 242.299392 249.056631     5

Note, I'm planning an update to geojsonsf by the end of October with some important fixes & updates.


You can also specify package version dependencies inside the DESCRIPTION in place of inside functions

  if (packageVersion("geojsonio") < "0.6.0.9100")
    stop("You need geojsonio >= 0.6.0.9100 to use this function.", call. = FALSE)

vs

Imports: 
    htmlwidgets,
    geojsonio (>=0.6.09100),
    htmltools,
    shiny,
    rmarkdown,
    jsonlite,
    magrittr

This way you don't have to implement the version check inside each function which may require it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.