• Stars
    star
    276
  • Rank 143,976 (Top 3 %)
  • Language
    R
  • License
    Other
  • Created over 4 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Get You to Your Desired Plot Faster

ggcharts

R build status CRAN Version Total Downloads Lifecycle Status

Overview

{ggcharts} provides a high-level {ggplot2} interface for creating common charts. Its aim is both simple and ambitious: to get you from your data visualization idea to an actual plot faster. How so? By taking care of a lot of data preprocessing, obscure {ggplot2} details and plot styling for you. The resulting plots are ggplot objects and can be further customized using any {ggplot2} function.

Installation

The package is available from CRAN.

install.packages("ggcharts")

Alternatively, you can install the latest development version from GitHub.

if (!"remotes" %in% installed.packages()) {
  install.packages("remotes")
}
remotes::install_github("thomas-neitmann/ggcharts", upgrade = "never")

If you get an error when trying to install from GitHub, run this code and then try to install once again.

Sys.setenv(R_REMOTES_NO_ERRORS_FROM_WARNINGS = "true")

If the installation still fails please open an issue.

Why ggcharts?

Thanks to {ggplot2} you can create beautiful plots in R. However, it can often take quite a bit of effort to get from a data visualization idea to an actual plot. As an example, letโ€™s say you want to create a faceted bar chart displaying the top 10 within each facet ordered from highest to lowest. What sounds simple is actually pretty hard to achieve. Have a look:

library(dplyr)
library(ggplot2)
library(ggcharts)
data("biomedicalrevenue")

biomedicalrevenue %>%
  filter(year %in% c(2012, 2015, 2018)) %>%
  group_by(year) %>%
  top_n(10, revenue) %>%
  ungroup() %>%
  mutate(company = tidytext::reorder_within(company, revenue, year)) %>%
  ggplot(aes(company, revenue)) +
  geom_col() +
  coord_flip() +
  tidytext::scale_x_reordered() +
  facet_wrap(vars(year), scales = "free_y")

Thatโ€™s a lot of code! And you likely never heard of some of the functions involved. With {ggcharts} you can create the same plot (actually an even better looking one) in almost a single line of code.

biomedicalrevenue %>%
  filter(year %in% c(2012, 2015, 2018)) %>%
  bar_chart(x = company, y = revenue, facet = year, top_n = 10)

Gallery

Charts

data("revenue_wide")
line_chart(data = revenue_wide, x = year, y = Roche:Bayer) +
  labs(x = "Year", y = "Revenue (Billion USD)")

biomedicalrevenue %>%
  filter(year == 2018) %>%
  lollipop_chart(x = company, y = revenue, threshold = 30) +
  labs(
    x = NULL,
    y = "Revenue",
    title = "Biomedical Companies with Revenue > $30Bn."
  ) +
  scale_y_continuous(
    labels = function(x) paste0("$", x, "Bn."),
    expand = expansion(mult = c(0, .05))
  )

data("popeurope")
dumbbell_chart(
  data = popeurope,
  x = country,
  y1 = pop1952,
  y2 = pop2007,
  top_n = 10,
  point_colors = c("lightgray", "#494F5C")
) +
  labs(
    x = NULL,
    y = "Population",
    title = "Europe's Largest Countries by Population in 2007"
  ) +
  scale_y_continuous(
    limits = c(0, NA),
    labels = function(x) paste(x, "Mn.")
  )

data(mtcars)
mtcars_z <- dplyr::transmute(
  .data = mtcars,
  model = row.names(mtcars),
  hpz = scale(hp)
)

diverging_bar_chart(data = mtcars_z, x = model, y = hpz)

diverging_lollipop_chart(
  data = mtcars_z,
  x = model,
  y = hpz,
  lollipop_colors = c("#006400", "#b32134"),
  text_color = c("#006400", "#b32134")
)

data("popch")
pyramid_chart(data = popch, x = age, y = pop, group = sex)

Themes

ggcharts_set_theme("theme_hermit")
bar_chart(data = diamonds, x = cut)

ggcharts_set_theme("theme_ng")
bar_chart(data = diamonds, x = cut)

ggcharts_set_theme("theme_nightblue")
bar_chart(data = diamonds, x = cut)