iheatmapr

iheatmapr: Interactive complex heatmaps in R - Published in JOSS (2017)

https://github.com/ropensci/iheatmapr

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    3 of 12 committers (25.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

data-visualization heatmap interactive-visualizations peer-reviewed plotly r r-package rstats

Keywords from Contributors

weather-data defra air-quality air-pollution-levels air-pollution sepa precipitation mopex kgclimateclass grdc
Last synced: 4 months ago · JSON representation

Repository

Complex, interactive heatmaps in R

Basic Info
Statistics
  • Stars: 269
  • Watchers: 23
  • Forks: 36
  • Open Issues: 51
  • Releases: 5
Topics
data-visualization heatmap interactive-visualizations peer-reviewed plotly r r-package rstats
Created almost 9 years ago · Last pushed over 1 year ago
Metadata Files
Readme Changelog Contributing License Codemeta

README.md

R-CMD-check iheatmapr peer review status in ROpenSci JOSS CRAN License: MIT

iheatmapr

iheatmapr is an R package for building complex, interactive heatmaps using modular building blocks. "Complex" heatmaps are heatmaps in which subplots along the rows or columns of the main heatmap add more information about each row or column. For example, a one column additional heatmap may indicate what group a particular row or column belongs to. Complex heatmaps may also include multiple side by side heatmaps which show different types of data for the same conditions. Interactivity can improve complex heatmaps by providing tooltips with information about each cell and enabling zooming into interesting features. iheatmapr uses the plotly library for interactivity.

While there are already plenty of awesome R packages for making heatmaps, including several great packages for making relatively simple interactive heatmaps (heatmaply and d3heatmap) or complex static heatmaps (ComplexHeatmap), iheatmapr seeks to make it easy to make complex interactive heatmaps.

Installation

To install the CRAN version of iheatmapr:

r install.packages("iheatmapr")

To install the github version of iheatmapr:

r devtools::install_github("ropensci/iheatmapr")

Example Complex Heatmap

As an example of a complex heatmap, we can make a version of the famous vaccines plot from the Wall Street Journal that has been recreated in several other heatmap frameworks in R.

A graphical demo of an iheatmap in the RStudio plot viewer

The code to create this heatmap is:

```R library(iheatmapr) data(measles, package = "iheatmapr")

mainheatmap(measles, name = "Measles
Cases", x
categorical = FALSE, layout = list(font = list(size = 8))) %>% addcolgroups(ifelse(1930:2001 < 1961,"No","Yes"), side = "bottom", name = "Vaccine
Introduced?", title = "Vaccine?", colors = c("lightgray","blue")) %>% addcollabels(ticktext = seq(1930,2000,10),font = list(size = 8)) %>% addrowlabels(size = 0.3,font = list(size = 6)) %>% addcolsummary(layout = list(title = "Average
across
states"), yname = "summary") %>%
addcoltitle("Measles Cases from 1930 to 2001", side= "top") %>% addrowsummary(groups = TRUE, type = "bar", layout = list(title = "Average
per
year", font = list(size = 8)))

```

Modular components of the plot are added in an iterative fashion to the top, right, left, or bottom of the heatmap. iheatmapr also contains a function (iheatmap) to make a fairly standard heatmap with optional dendrograms and row or column annotation heatmaps (See vignette).

All the plots aligned with the main heatmap horizontally share the same y axis and thus zooming in the y direction within the heatmap will also zoom in to those subplots. The plots aligned vertically share an x axis with that heatmap and zooming horizontally within those plots will be linked.

Hovering over the heatmaps yields a tooltip with the name of the row and column as well as the value represented.

Documentation

See the vignette for a more thorough introduction to the package.

Acknowledgements

This package includes the open source Plotly.js library, which does much of the work of making these interactive plots possible! In creating this package, I also drew inspiration & some code from the great plotly R package; in particular, the code for the iheatmapr htmlwidget is adapted from an earlier version of the plotly R package. Additionally, numerous people at Genentech helped provide feedback and guidance for this project, including but not limited to Justin Finkle, August Guang, Michael Lawrence, Gabe Becker, Steve Lianoglou, Pete Haverty... thanks to all who helped review code and/or provide feedback! This package also went through the on-boarding process for rOpensci -- thanks to the reviewers Carl Ganz and Andee Kaplan and editor Maëlle Salmon for all their helpful feedback!

ropensci_footer

Owner

  • Name: rOpenSci
  • Login: ropensci
  • Kind: organization
  • Email: info@ropensci.org
  • Location: Berkeley, CA

JOSS Publication

iheatmapr: Interactive complex heatmaps in R
Published
August 14, 2017
Volume 2, Issue 16, Page 359
Authors
Alicia N. Schep ORCID
Stanford University, Genentech
Sarah K. Kummerfeld ORCID
Genentech
Editor
Arfon Smith ORCID
Tags
visualization heatmap

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "identifier": "iheatmapr",
  "description": "Make complex, interactive heatmaps. 'iheatmapr' includes a modular system for iteratively building up complex heatmaps, as well as the iheatmap() function for making relatively standard heatmaps.",
  "name": "iheatmapr: Interactive, Complex Heatmaps",
  "relatedLink": "https://docs.ropensci.org/iheatmapr",
  "codeRepository": "https://github.com/ropensci/iheatmapr",
  "issueTracker": "https://github.com/ropensci/iheatmapr/issues",
  "license": "https://spdx.org/licenses/MIT",
  "version": "0.7.0",
  "programmingLanguage": {
    "@type": "ComputerLanguage",
    "name": "R",
    "url": "https://r-project.org"
  },
  "runtimePlatform": "R version 4.3.1 (2023-06-16)",
  "author": [
    {
      "@type": "Person",
      "givenName": "Alicia",
      "familyName": "Schep",
      "email": "aschep@gmail.com",
      "@id": "orcid.org/0000-0002-3915-0618"
    },
    {
      "@type": "Person",
      "givenName": "Sarah",
      "familyName": "Kummerfeld",
      "email": "kummerfeld.sarah@gene.com",
      "@id": "orcid.org/0000-0002-0089-2358"
    }
  ],
  "contributor": [
    {
      "@type": "Person",
      "givenName": "Alex",
      "familyName": "Johnson"
    },
    {
      "@type": "Person",
      "givenName": "Étienne",
      "familyName": "Tétreault-Pinard"
    },
    {
      "@type": "Person",
      "givenName": "Mikola",
      "familyName": "Lysenko"
    },
    {
      "@type": "Person",
      "givenName": "Ricky",
      "familyName": "Reusser"
    },
    {
      "@type": "Person",
      "givenName": "Robert",
      "familyName": "Monfera"
    },
    {
      "@type": "Person",
      "givenName": "Nicolas",
      "familyName": "Riesco"
    },
    {
      "@type": "Person",
      "givenName": "Miklós",
      "familyName": "Tusz"
    },
    {
      "@type": "Person",
      "givenName": "Chelsea",
      "familyName": "Douglas"
    },
    {
      "@type": "Person",
      "givenName": "Ben",
      "familyName": "Postlethwaite"
    },
    {
      "@type": "Person",
      "givenName": "Chris",
      "familyName": "Parmer"
    },
    {
      "@type": "Person",
      "givenName": "Alex",
      "familyName": "Vados"
    },
    {
      "@type": "Person",
      "givenName": "Frederick",
      "familyName": "Boehm"
    }
  ],
  "copyrightHolder": [
    {
      "@type": "Organization",
      "name": "Genentech"
    },
    {
      "@type": "Organization",
      "name": "Plotly"
    }
  ],
  "maintainer": [
    {
      "@type": "Person",
      "givenName": "Alan",
      "familyName": "O'Callaghan",
      "email": "alan.ocallaghan@outlook.com"
    }
  ],
  "softwareSuggestions": [
    {
      "@type": "SoftwareApplication",
      "identifier": "htmltools",
      "name": "htmltools",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=htmltools"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "datasets",
      "name": "datasets"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "shiny",
      "name": "shiny",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=shiny"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "testthat",
      "name": "testthat",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=testthat"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "rmarkdown",
      "name": "rmarkdown",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=rmarkdown"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "reshape2",
      "name": "reshape2",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=reshape2"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "roxygen2",
      "name": "roxygen2",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=roxygen2"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "covr",
      "name": "covr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=covr"
    },
    {
      "@type": "SoftwareApplication",
      "identifier": "webshot",
      "name": "webshot",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=webshot"
    }
  ],
  "softwareRequirements": {
    "1": {
      "@type": "SoftwareApplication",
      "identifier": "R",
      "name": "R",
      "version": ">= 3.5.0"
    },
    "2": {
      "@type": "SoftwareApplication",
      "identifier": "methods",
      "name": "methods"
    },
    "3": {
      "@type": "SoftwareApplication",
      "identifier": "utils",
      "name": "utils"
    },
    "4": {
      "@type": "SoftwareApplication",
      "identifier": "magrittr",
      "name": "magrittr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=magrittr"
    },
    "5": {
      "@type": "SoftwareApplication",
      "identifier": "stats",
      "name": "stats"
    },
    "6": {
      "@type": "SoftwareApplication",
      "identifier": "ggdendro",
      "name": "ggdendro",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=ggdendro"
    },
    "7": {
      "@type": "SoftwareApplication",
      "identifier": "fastcluster",
      "name": "fastcluster",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=fastcluster"
    },
    "8": {
      "@type": "SoftwareApplication",
      "identifier": "RColorBrewer",
      "name": "RColorBrewer",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=RColorBrewer"
    },
    "9": {
      "@type": "SoftwareApplication",
      "identifier": "htmlwidgets",
      "name": "htmlwidgets",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=htmlwidgets"
    },
    "10": {
      "@type": "SoftwareApplication",
      "identifier": "jsonlite",
      "name": "jsonlite",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=jsonlite"
    },
    "11": {
      "@type": "SoftwareApplication",
      "identifier": "scales",
      "name": "scales",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=scales"
    },
    "12": {
      "@type": "SoftwareApplication",
      "identifier": "knitr",
      "name": "knitr",
      "provider": {
        "@id": "https://cran.r-project.org",
        "@type": "Organization",
        "name": "Comprehensive R Archive Network (CRAN)",
        "url": "https://cran.r-project.org"
      },
      "sameAs": "https://CRAN.R-project.org/package=knitr"
    },
    "13": {
      "@type": "SoftwareApplication",
      "identifier": "tools",
      "name": "tools"
    },
    "SystemRequirements": null
  },
  "applicationCategory": "Visualization",
  "isPartOf": "https://ropensci.org",
  "keywords": [
    "heatmap",
    "plotly",
    "r",
    "interactive-visualizations",
    "data-visualization",
    "htmlwidgets",
    "rstats",
    "r-package",
    "peer-reviewed"
  ],
  "fileSize": "22659.166KB",
  "citation": [
    {
      "@type": "ScholarlyArticle",
      "datePublished": "2017",
      "author": [
        {
          "@type": "Person",
          "givenName": [
            "Alicia",
            "N"
          ],
          "familyName": "Schep"
        },
        {
          "@type": "Person",
          "givenName": [
            "Sarah",
            "K"
          ],
          "familyName": "Kummerfeld"
        }
      ],
      "name": "iheatmapr: Interactive complex heatmaps in R",
      "identifier": "10.21105/joss.00359",
      "url": "http://dx.doi.org/10.21105/joss.00359",
      "@id": "https://doi.org/10.21105/joss.00359",
      "sameAs": "https://doi.org/10.21105/joss.00359",
      "isPartOf": {
        "@type": "PublicationIssue",
        "datePublished": "2017",
        "isPartOf": {
          "@type": [
            "PublicationVolume",
            "Periodical"
          ],
          "name": "Journal of Open Source Software"
        }
      }
    }
  ],
  "releaseNotes": "https://github.com/ropensci/iheatmapr/blob/master/NEWS.md",
  "readme": "https://github.com/ropensci/iheatmapr/blob/main/README.md",
  "contIntegration": "https://github.com/ropensci/iheatmapr/actions?query=workflow%3AR-CMD-check",
  "review": {
    "@type": "Review",
    "url": "https://github.com/ropensci/software-review/issues/107",
    "provider": "https://ropensci.org"
  }
}

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 152
  • Total Committers: 12
  • Avg Commits per committer: 12.667
  • Development Distribution Score (DDS): 0.217
Past Year
  • Commits: 1
  • Committers: 1
  • Avg Commits per committer: 1.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
AliciaSchep a****p@g****m 119
Alicia a****p@s****u 16
Frederick Boehm f****m@g****m 6
Alan O'Callaghan a****n@o****m 3
oristaszewski 1****i 1
Maëlle Salmon m****n@y****e 1
Marcel Schilling m****g@m****e 1
Karthik Ram k****m@g****m 1
Jeroen Ooms j****s@g****m 1
Jean V. Adams J****s 1
Grace Li g****8@b****u 1
Ahmed Mohamed m****d@k****p 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 82
  • Total pull requests: 28
  • Average time to close issues: 3 months
  • Average time to close pull requests: 17 days
  • Total issue authors: 47
  • Total pull request authors: 11
  • Average comments per issue: 2.39
  • Average comments per pull request: 1.29
  • Merged pull requests: 22
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 3
  • Pull requests: 3
  • Average time to close issues: 7 days
  • Average time to close pull requests: 9 days
  • Issue authors: 2
  • Pull request authors: 2
  • Average comments per issue: 4.33
  • Average comments per pull request: 1.33
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • AliciaSchep (8)
  • dasiav7 (7)
  • mschilli87 (5)
  • halhen (3)
  • IgnatiusPang (3)
  • daattali (3)
  • alpreyes (3)
  • lucaz88 (2)
  • rfenouil (2)
  • josruirod (2)
  • srsankhe (2)
  • romert01 (2)
  • ahmohamed (2)
  • shreyagupta0909 (2)
  • alanocallaghan (2)
Pull Request Authors
  • AliciaSchep (9)
  • alanocallaghan (5)
  • maelle (4)
  • fboehm (3)
  • ahmohamed (2)
  • JVAdams (1)
  • oristaszewski (1)
  • jeroen (1)
  • karthik (1)
  • mschilli87 (1)
  • graceli8 (1)
Top Labels
Issue Labels
question (22) enhancement (15) bug (10) maybe-fixed (2)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 5
proxy.golang.org: github.com/ropensci/iheatmapr
  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 4 months ago

Dependencies

DESCRIPTION cran
  • R >= 3.2.0 depends
  • RColorBrewer * imports
  • fastcluster * imports
  • ggdendro * imports
  • htmlwidgets * imports
  • jsonlite * imports
  • knitr * imports
  • magrittr * imports
  • methods * imports
  • scales * imports
  • stats * imports
  • tools * imports
  • utils * imports
  • covr * suggests
  • datasets * suggests
  • htmltools * suggests
  • reshape2 * suggests
  • rmarkdown * suggests
  • roxygen2 * suggests
  • shiny * suggests
  • testthat * suggests
  • webshot * suggests
.github/workflows/check-standard.yaml actions
  • actions/checkout v3 composite
  • r-lib/actions/check-r-package v2 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite
.github/workflows/test-coverage.yaml actions
  • actions/checkout v3 composite
  • r-lib/actions/setup-r v2 composite
  • r-lib/actions/setup-r-dependencies v2 composite