Skip to contents

Create a Pie Chart

Usage

v_pie(
  vc,
  mapping = NULL,
  data = NULL,
  name = NULL,
  label = list(visible = TRUE),
  ...,
  serie_id = NULL,
  data_id = NULL
)

Arguments

vc

A chart initialized with vchart().

mapping

Default list of aesthetic mappings to use for chart.

data

Default dataset to use for chart. If not already a data.frame, it will be coerced to with as.data.frame.

name

Name for the serie, only used for single serie (no color/fill aesthetic supplied).

label

Options for displaying labels on the pie chart.

...

Additional parameters for the serie.

data_id, serie_id

ID for the data/serie, can be used to further customize the chart with v_specs().

Value

A vchart() htmlwidget object.

Examples


library(vchartr)

# Basic Pie Chart
subset(world_electricity, year == 2023 & type == "total") %>%
  vchart() %>% 
  v_pie(aes(x = source, y = generation))
# Use custom colors subset(world_electricity, year == 2023 & type == "total") %>% vchart() %>% v_pie(aes(x = source, y = generation)) %>% v_scale_color_manual(c( "Low carbon" = "#a3be8c", "Fossil fuels" = "#4C566A" ))
# Customize tooltip subset(world_electricity, year == 2023 & type == "total") %>% vchart() %>% v_pie(aes(x = source, y = generation)) %>% v_specs_tooltip( mark = list( content = list( list( key = JS("datum => datum['x']"), value = JS("datum => Math.round(datum['y']) + ' TWh'") ), list( hasShape = FALSE, key = "Proportion", value = JS("datum => datum._percent_ + '%'") ) ) ) )
# Nested Pie Chart vchart() %>% v_pie( data = subset(world_electricity, year == 2023 & type == "total"), mapping = aes(x = source, y = generation), outerRadius = 0.65, innerRadius = 0, label = list( visible = TRUE, position = "inside", rotate = FALSE, style = list(fill = "white") ), pie = list( style = list( stroke = "#FFFFFF", lineWidth = 2 ) ) ) %>% v_pie( data = subset(world_electricity, year == 2023 & type == "detail"), mapping = aes(x = source, y = generation), outerRadius = 0.8, innerRadius = 0.67, pie = list( style = list( stroke = "#FFFFFF", lineWidth = 2 ) ) )