Title: | Interactive Charts with the 'JavaScript' 'VChart' Library |
---|---|
Description: | Provides an 'htmlwidgets' interface to 'VChart.js'. 'VChart', more than just a cross-platform charting library, but also an expressive data storyteller. 'VChart' examples and documentation are available here: <https://www.visactor.io/vchart>. |
Authors: | Victor Perrier [aut, cre], Fanny Meyer [aut] |
Maintainer: | Victor Perrier <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.1.3 |
Built: | 2024-11-01 05:19:03 UTC |
Source: | https://github.com/dreamrs/vchartr |
htmlwidget
interface to the
VChart javascript chart libraryThis package allow you to use VChart.js (https://www.visactor.io/vchart), to create interactive charts.
Victor Perrier (@dreamRs_fr)
Useful links:
This dataset represents CO2 emissions for a subset of country over the period 1990 - 2022.
co2_emissions
co2_emissions
A data frame with 495 observations and 11 variables:
country
: Country - Geographic location.
year
: Year - Year of observation.
co2
: Annual CO2 emissions - Annual total emissions of carbon dioxide (CO2), excluding land-use change, measured in million tonnes.
co2_per_gdp
: Annual CO2 emissions per GDP (kg per international-$) - Annual total emissions of carbon dioxide (CO2), excluding land-use change, measured in kilograms per dollar of GDP (2011 international-$).
co2_per_capita
: Annual CO2 emissions (per capita) - Annual total emissions of carbon dioxide (CO2), excluding land-use change, measured in tonnes per person.
co2_growth_abs
: Annual CO2 emissions growth (abs) - Annual growth in total emissions of carbon dioxide (CO2), excluding land-use change, measured in million tonnes.
co2_growth_prct
: Annual CO2 emissions growth (%) - Annual percentage growth in total emissions of carbon dioxide (CO2), excluding land-use change.
co2_per_unit_energy
: Annual CO2 emissions per unit energy (kg per kilowatt-hour) - Annual total emissions of carbon dioxide (CO2), excluding land-use change, measured in kilograms per kilowatt-hour of primary energy consumption.
consumption_co2
: Annual consumption-based CO2 emissions - Annual consumption-based emissions of carbon dioxide (CO2), measured in million tonnes.
consumption_co2_per_capita
: Per capita consumption-based CO2 emissions - Annual consumption-based emissions of carbon dioxide (CO2), measured in tonnes per person.
consumption_co2_per_gdp
: Annual consumption-based CO2 emissions per GDP (kg per international-$) - Annual consumption-based emissions of carbon dioxide (CO2), measured in kilograms per dollar of GDP (2011 international-$).
Documentation is from Our World In Data, see https://github.com/owid/co2-data for the data and https://ourworldindata.org/co2-and-greenhouse-gas-emissions for more about CO2 emissions.
This dataset contains world polygons with CO2 emissions.
co2_world
co2_world
A data frame with 495 observations and 11 variables:
iso_code
: ISO code A3 for country.
name
: Name of country.
co2
: Annual CO2 emissions - Annual total emissions of carbon dioxide (CO2), excluding land-use change, measured in million tonnes.
co2_per_capita
: Annual CO2 emissions (per capita) - Annual total emissions of carbon dioxide (CO2), excluding land-use change, measured in tonnes per person.
geometry
: Geographical attributes.
Documentation is from Our World In Data, see https://github.com/owid/co2-data for the data and https://ourworldindata.org/co2-and-greenhouse-gas-emissions for more about CO2 emissions.
These data represent the GDP of the world's countries, classified by continent and sub-region.
This is a subset of the dataset rnaturalearth::countries110
.
countries_gdp
countries_gdp
A data frame with 177 observations and 3 variables:
REGION_UN
: Continent
SUBREGION
: Sub-region in the continent
ADMIN
: Administrative name of country
GDP_MD
: GDP
Package rnaturalearth
This dataset represents monthly electricity generation by source in France over the period 2012 - 2024.
eco2mix
eco2mix
A data frame with 151 observations and 10 variables:
date
: Date
fuel
: Fuel generation in MW
coal
: Coal generation in MW
gas
: Gas generation in MW
nuclear
: Nuclear generation in MW
wind
: Wind generation in MW
solar
: Solar generation in MW
hydraulic
: Hydraulic generation in MW
pumping
: Pumping generation in MW
bioenergies
: Bioenergies generation in MW
This dataset represents monthly electricity generation by source in France over the period 2012 - 2024.
eco2mix_long
eco2mix_long
A data frame with 1359 observations and 3 variables:
date
: Date
source
: Production according to the different sectors making up the energy mix.
production
: Generation in MW
This dataset represents the electricity mix of 10 countries (those with the highest electricity generation) in 2023.
electricity_mix
electricity_mix
A data frame with 70 observations and 3 variables:
country
: Country name
source
: source of electricity
generation
: Total electricity generation - Measured in terawatt-hours.
type
: Low carbon or fossil fuels type of source.
These data represent how energy is converted or transmitted before being consumed or lost.
energy_sankey
energy_sankey
A data frame with 177 observations and 3 variables:
source
: Source
target
: Target
value
: Energy in TWh
Department of Energy & Climate Change via Tom Counsell
Format numbers with D3
format_num_d3(format, prefix = "", suffix = "", locale = "en-US")
format_num_d3(format, prefix = "", suffix = "", locale = "en-US")
format |
Format for numbers, currency, percentage, e.g. |
prefix |
Character string to append before formatted value. |
suffix |
Character string to append after formatted value. |
locale |
Localization to use, for example |
a JS
function.
library(vchartr)
library(vchartr)
Format date with dayjs JavaScript library
format_date_dayjs(format, prefix = "", suffix = "", locale = "en") format_datetime_dayjs( format, prefix = "", suffix = "", locale = "en", tz = NULL ) label_format_date(format) label_format_datetime(format, tz = NULL)
format_date_dayjs(format, prefix = "", suffix = "", locale = "en") format_datetime_dayjs( format, prefix = "", suffix = "", locale = "en", tz = NULL ) label_format_date(format) label_format_datetime(format, tz = NULL)
format |
Format for dates, see online documentation. |
prefix |
Character string to append before formatted value. |
suffix |
Character string to append after formatted value. |
locale |
Localization to use, for example |
tz |
Timezone to use. |
a JS
function.
library(vchartr) ### Format date # date in french in %B %y format vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date( date_labels = format_date_dayjs("MMMM YY", locale = "fr") ) # date in arabic in %A %d %b %Y format vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date( date_labels = format_date_dayjs("dddd D MMM YYYY", locale = "ar") )
library(vchartr) ### Format date # date in french in %B %y format vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date( date_labels = format_date_dayjs("MMMM YY", locale = "fr") ) # date in arabic in %A %d %b %Y format vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date( date_labels = format_date_dayjs("dddd D MMM YYYY", locale = "ar") )
Add a rectangle annotation to a chart
v_mark_rect( vc, xmin = NULL, xmax = NULL, ymin = NULL, ymax = NULL, .area.style.fill = "grey35", .area.style.fillOpacity = 0.3, .label.text = NULL, .label.position = "insideTop", .label.refY = 0, .label.refX = 0 ) v_mark_polygon( vc, coords, .area.style.fill = "grey35", .area.style.fillOpacity = 0.3, .label.text = NULL, .label.position = "insideTop", .label.refY = 0, .label.refX = 0 )
v_mark_rect( vc, xmin = NULL, xmax = NULL, ymin = NULL, ymax = NULL, .area.style.fill = "grey35", .area.style.fillOpacity = 0.3, .label.text = NULL, .label.position = "insideTop", .label.refY = 0, .label.refX = 0 ) v_mark_polygon( vc, coords, .area.style.fill = "grey35", .area.style.fillOpacity = 0.3, .label.text = NULL, .label.position = "insideTop", .label.refY = 0, .label.refX = 0 )
vc |
An htmlwidget created with |
xmin , xmax , ymin , ymax
|
Target position for the rectangle. Use |
.area.style.fill |
Fill color. |
.area.style.fillOpacity |
Fill opacity. |
.label.text |
Text for the label on the line. |
.label.position |
The label position of the dimension line (the relative position of the label relative to the line). See online documentation for options. |
.label.refY , .label.refX
|
The offset in the vertical direction of the reference line. |
coords |
A |
A vchart()
htmlwidget
object.
library(vchartr) # Draw a rectangle vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_rect( xmin = 10, xmax = 18, ymin = 20, ymax = 50 ) # don't provide x or y to reach chart's limit vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_rect( xmin = 10, xmax = 18 ) vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_rect( ymin = 10, ymax = 18 ) vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_rect( xmin = "50%", xmax = "100%", # from right to left ymin = "50%", ymax = "100%" # note that for y it's from top to bottom ) # Whith date scale vchart(temperatures) %>% v_line(aes(date, average)) %>% v_mark_rect( xmin = as.Date("2024-06-20"), xmax = as.Date("2024-09-22"), .label.text = "Summer" ) # Draw a polygon vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_polygon( coords = list( x = c(7, 22, 15), y = c(10, 50, 80) ) )
library(vchartr) # Draw a rectangle vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_rect( xmin = 10, xmax = 18, ymin = 20, ymax = 50 ) # don't provide x or y to reach chart's limit vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_rect( xmin = 10, xmax = 18 ) vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_rect( ymin = 10, ymax = 18 ) vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_rect( xmin = "50%", xmax = "100%", # from right to left ymin = "50%", ymax = "100%" # note that for y it's from top to bottom ) # Whith date scale vchart(temperatures) %>% v_line(aes(date, average)) %>% v_mark_rect( xmin = as.Date("2024-06-20"), xmax = as.Date("2024-09-22"), .label.text = "Summer" ) # Draw a polygon vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_polygon( coords = list( x = c(7, 22, 15), y = c(10, 50, 80) ) )
Add an horizontal or vertical line to a chart
v_mark_vline( vc, x, ..., .line.style.stroke = "#000", .line.style.lineDash = list(8, 8), .label.text = NULL, .label.position = "end", .label.refY = 0, .label.refX = 0, .endSymbol.style.visible = FALSE, .startSymbol.style.visible = FALSE ) v_mark_hline( vc, y, ..., .line.style.stroke = "#000", .line.style.lineDash = list(8, 8), .label.text = NULL, .label.position = "insideEndBottom", .label.refY = -10, .label.refX = 0, .endSymbol.style.visible = FALSE, .startSymbol.style.visible = FALSE ) v_mark_segment( vc, x, xend, y, yend, ..., .line.style.stroke = "#000", .line.style.lineDash = list(8, 8), .label.text = NULL, .label.position = "insideEndBottom", .label.refY = -10, .label.refX = 0, .endSymbol.style.visible = FALSE, .startSymbol.style.visible = FALSE )
v_mark_vline( vc, x, ..., .line.style.stroke = "#000", .line.style.lineDash = list(8, 8), .label.text = NULL, .label.position = "end", .label.refY = 0, .label.refX = 0, .endSymbol.style.visible = FALSE, .startSymbol.style.visible = FALSE ) v_mark_hline( vc, y, ..., .line.style.stroke = "#000", .line.style.lineDash = list(8, 8), .label.text = NULL, .label.position = "insideEndBottom", .label.refY = -10, .label.refX = 0, .endSymbol.style.visible = FALSE, .startSymbol.style.visible = FALSE ) v_mark_segment( vc, x, xend, y, yend, ..., .line.style.stroke = "#000", .line.style.lineDash = list(8, 8), .label.text = NULL, .label.position = "insideEndBottom", .label.refY = -10, .label.refX = 0, .endSymbol.style.visible = FALSE, .startSymbol.style.visible = FALSE )
vc |
An htmlwidget created with |
x , y , xend , yend
|
Target position for the line. |
... |
Additional parameters for the line, see online documentation for more. |
.line.style.stroke |
Stroke color. |
.line.style.lineDash |
Used to configure the dashed line mode when filling lines. It uses an array of values to specify the alternating lengths of lines and gaps that describe the pattern. |
.label.text |
Text for the label on the line. |
.label.position |
The label position of the dimension line (the relative position of the label relative to the line). See online documentation for options. |
.label.refY , .label.refX
|
The offset in the vertical direction of the reference line. |
.endSymbol.style.visible , .startSymbol.style.visible
|
Whether the symbol element is visible or not. |
A vchart()
htmlwidget
object.
library(vchartr) # Vertical line vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_mark_vline(x = "May") # Vertical lines with labels vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_mark_vline( x = c("May", "September"), .label.text = c("May", "September") ) # Horizontal line vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_mark_hline(y = 12) # Both horizontal and vertical lines vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_mark_vline(x = "May") %>% v_mark_hline(y = 12) # lines on a scatter plot vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_vline(x = mean(cars$speed)) %>% v_mark_hline(y = mean(cars$dist)) # segment vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_segment(x = 8, xend = 22, y = 12, yend = 100) # line on date scale vchart(temperatures) %>% v_line(aes(date, average)) %>% v_mark_vline(x = as.Date("2024-06-20")) # segment on date scale vchart(temperatures) %>% v_line(aes(date, average)) %>% v_mark_segment( x = as.Date("2024-04-01"), xend = as.Date("2024-07-01"), y = 12, yend = 24, .line.style.lineDash = 0, .line.style.stroke = "firebrick" )
library(vchartr) # Vertical line vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_mark_vline(x = "May") # Vertical lines with labels vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_mark_vline( x = c("May", "September"), .label.text = c("May", "September") ) # Horizontal line vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_mark_hline(y = 12) # Both horizontal and vertical lines vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_mark_vline(x = "May") %>% v_mark_hline(y = 12) # lines on a scatter plot vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_vline(x = mean(cars$speed)) %>% v_mark_hline(y = mean(cars$dist)) # segment vchart(cars) %>% v_scatter(aes(speed, dist)) %>% v_mark_segment(x = 8, xend = 22, y = 12, yend = 100) # line on date scale vchart(temperatures) %>% v_line(aes(date, average)) %>% v_mark_vline(x = as.Date("2024-06-20")) # segment on date scale vchart(temperatures) %>% v_line(aes(date, average)) %>% v_mark_segment( x = as.Date("2024-04-01"), xend = as.Date("2024-07-01"), y = 12, yend = 24, .line.style.lineDash = 0, .line.style.stroke = "firebrick" )
This data contains information about the climate in Paris, France.
meteo_paris
meteo_paris
A data frame with 177 observations and 3 variables:
month
: Month of the year
temperature_avg
: Average temperature (°C)
temperature_min
: Average minimum temperature (°C)
temperature_max
: Average maximum temperature (°C)
precipitation
: Precipitation (mm)
humidity
: Humidity (%)
rainy_days
: Rainy days (days)
sunshine_hours
: Sunshine hours (h)
Manual color scale
Discrete color scale
v_scale_color_manual(vc, values) v_scale_fill_manual(vc, values) v_scale_color_discrete(vc, palette) v_scale_fill_discrete(vc, palette)
v_scale_color_manual(vc, values) v_scale_fill_manual(vc, values) v_scale_color_discrete(vc, palette) v_scale_fill_discrete(vc, palette)
vc |
An htmlwidget created with |
values |
A named list with data values as name and color as values |
palette |
A color vector or the name of an R palette. |
A vchart()
htmlwidget
object.
A vchart()
htmlwidget
object.
library(vchartr) subset(electricity_mix, country %in% c("France", "Canada")) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) %>% v_scale_fill_manual(c( "oil" = "#80549f", "coal" = "#a68832", "solar" = "#d66b0d", "gas" = "#f20809", "wind" = "#72cbb7", "hydro" = "#2672b0", "nuclear" = "#e4a701" )) vchart(palmerpenguins::penguins) %>% v_scatter( aes(x = flipper_length_mm, y = body_mass_g, color = species) ) %>% v_scale_color_manual(c( Adelie = "#ffa232", Chinstrap = "#33a2a2", Gentoo = "#b34df2" )) library(vchartr) subset(electricity_mix, country %in% c("France", "Canada")) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) %>% v_scale_fill_discrete("Okabe-Ito") subset(electricity_mix, country %in% c("France", "Canada")) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) %>% v_scale_fill_discrete("ggplot2") # or subset(electricity_mix, country %in% c("France", "Canada")) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) %>% v_scale_fill_discrete(palette.colors(palette = "ggplot2")[-1])
library(vchartr) subset(electricity_mix, country %in% c("France", "Canada")) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) %>% v_scale_fill_manual(c( "oil" = "#80549f", "coal" = "#a68832", "solar" = "#d66b0d", "gas" = "#f20809", "wind" = "#72cbb7", "hydro" = "#2672b0", "nuclear" = "#e4a701" )) vchart(palmerpenguins::penguins) %>% v_scatter( aes(x = flipper_length_mm, y = body_mass_g, color = species) ) %>% v_scale_color_manual(c( Adelie = "#ffa232", Chinstrap = "#33a2a2", Gentoo = "#b34df2" )) library(vchartr) subset(electricity_mix, country %in% c("France", "Canada")) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) %>% v_scale_fill_discrete("Okabe-Ito") subset(electricity_mix, country %in% c("France", "Canada")) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) %>% v_scale_fill_discrete("ggplot2") # or subset(electricity_mix, country %in% c("France", "Canada")) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) %>% v_scale_fill_discrete(palette.colors(palette = "ggplot2")[-1])
Axis scale for continuous data
v_scale_x_continuous( vc, name = NULL, breaks = NULL, pretty = TRUE, labels = NULL, labels_tooltip = labels, zero = NULL, min = NULL, max = NULL, ..., position = "bottom" ) v_scale_y_continuous( vc, name = NULL, breaks = NULL, pretty = TRUE, labels = NULL, labels_tooltip = labels, zero = NULL, min = NULL, max = NULL, ..., position = "left" ) v_scale_x_log( vc, name = NULL, breaks = NULL, pretty = TRUE, labels = NULL, labels_tooltip = labels, zero = NULL, min = NULL, max = NULL, ..., position = "bottom" ) v_scale_y_log( vc, name = NULL, breaks = NULL, pretty = TRUE, labels = NULL, labels_tooltip = labels, zero = NULL, min = NULL, max = NULL, ..., position = "left" )
v_scale_x_continuous( vc, name = NULL, breaks = NULL, pretty = TRUE, labels = NULL, labels_tooltip = labels, zero = NULL, min = NULL, max = NULL, ..., position = "bottom" ) v_scale_y_continuous( vc, name = NULL, breaks = NULL, pretty = TRUE, labels = NULL, labels_tooltip = labels, zero = NULL, min = NULL, max = NULL, ..., position = "left" ) v_scale_x_log( vc, name = NULL, breaks = NULL, pretty = TRUE, labels = NULL, labels_tooltip = labels, zero = NULL, min = NULL, max = NULL, ..., position = "bottom" ) v_scale_y_log( vc, name = NULL, breaks = NULL, pretty = TRUE, labels = NULL, labels_tooltip = labels, zero = NULL, min = NULL, max = NULL, ..., position = "left" )
vc |
An htmlwidget created with |
name |
Title for the axis. |
breaks |
One of:
|
pretty |
Use |
labels , labels_tooltip
|
The format to be applied on numeric in the labels/tooltip. Either:
|
zero |
Force axis to start at 0. |
min |
Minimum value on the axis. |
max |
Maximum value on the axis. |
... |
Additional parameters for the axis. |
position |
Position of the axis. |
A vchart()
htmlwidget
object.
library(vchartr) # Add a title to the axis vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(name = "Electricity generation") vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source)) %>% v_scale_y_continuous(name = "Electricity generation") # Specify number of breaks vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(breaks = 10) # Specify breaks position vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(breaks = c(0, 5000, 10000)) # Format labels vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(labels = "~s") # Format labels with options vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(labels = format_num_d3(",", suffix = " TWh", locale = "fr-FR")) vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source)) %>% v_scale_y_continuous(labels = format_num_d3(",", suffix = " TWh", locale = "fr-FR"))
library(vchartr) # Add a title to the axis vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(name = "Electricity generation") vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source)) %>% v_scale_y_continuous(name = "Electricity generation") # Specify number of breaks vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(breaks = 10) # Specify breaks position vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(breaks = c(0, 5000, 10000)) # Format labels vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(labels = "~s") # Format labels with options vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_scale_y_continuous(labels = format_num_d3(",", suffix = " TWh", locale = "fr-FR")) vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source)) %>% v_scale_y_continuous(labels = format_num_d3(",", suffix = " TWh", locale = "fr-FR"))
Axis scale for date/time data
v_scale_x_date( vc, name = NULL, date_breaks = NULL, date_labels = NULL, date_labels_tooltip = date_labels, min = NULL, max = NULL, ..., position = "bottom" ) v_scale_y_date( vc, name = NULL, date_breaks = NULL, date_labels = NULL, date_labels_tooltip = date_labels, min = NULL, max = NULL, ..., position = "left" ) v_scale_x_datetime( vc, name = NULL, date_breaks = NULL, date_labels = NULL, date_labels_tooltip = date_labels, tz = NULL, min = NULL, max = NULL, ..., position = "bottom" ) v_scale_y_datetime( vc, name = NULL, date_breaks = NULL, date_labels = NULL, date_labels_tooltip = date_labels, tz = NULL, min = NULL, max = NULL, ..., position = "left" )
v_scale_x_date( vc, name = NULL, date_breaks = NULL, date_labels = NULL, date_labels_tooltip = date_labels, min = NULL, max = NULL, ..., position = "bottom" ) v_scale_y_date( vc, name = NULL, date_breaks = NULL, date_labels = NULL, date_labels_tooltip = date_labels, min = NULL, max = NULL, ..., position = "left" ) v_scale_x_datetime( vc, name = NULL, date_breaks = NULL, date_labels = NULL, date_labels_tooltip = date_labels, tz = NULL, min = NULL, max = NULL, ..., position = "bottom" ) v_scale_y_datetime( vc, name = NULL, date_breaks = NULL, date_labels = NULL, date_labels_tooltip = date_labels, tz = NULL, min = NULL, max = NULL, ..., position = "left" )
vc |
An htmlwidget created with |
name |
Title for the axis. |
date_breaks |
One of:
|
date_labels |
The format to be applied on Date/POSIXct in the labels, see |
date_labels_tooltip |
The format to be applied on Date/POSIXct in the tooltip, see |
min |
Minimum value on the axis. |
max |
Maximum value on the axis. |
... |
Additional parameters for the axis. |
position |
Position of the axis. |
tz |
The timezone. |
A vchart()
htmlwidget
object.
library(vchartr) # Add a title to the axis vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(name = "Date") # Specify number of labels vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(date_breaks = 5) # Specify intervals between labels vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(date_breaks = "2 years") # Format labels vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(date_labels = "MM-YYYY") # Other format for labels vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(date_labels = "MMM YYYY") # Format labels with locale vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date( date_labels = format_date_dayjs("MMMM YY", locale = "fr") ) # Different formats in labels and tootlip vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date( date_labels = "YYYY-MM", date_labels_tooltip = "MMMM YYYY" )
library(vchartr) # Add a title to the axis vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(name = "Date") # Specify number of labels vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(date_breaks = 5) # Specify intervals between labels vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(date_breaks = "2 years") # Format labels vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(date_labels = "MM-YYYY") # Other format for labels vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date(date_labels = "MMM YYYY") # Format labels with locale vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date( date_labels = format_date_dayjs("MMMM YY", locale = "fr") ) # Different formats in labels and tootlip vchart(eco2mix) %>% v_line(aes(date, solar)) %>% v_scale_x_date( date_labels = "YYYY-MM", date_labels_tooltip = "MMMM YYYY" )
Axis scale for discrete data
v_scale_x_discrete(vc, name = NULL, ..., position = "bottom") v_scale_y_discrete(vc, name = NULL, ..., position = "left")
v_scale_x_discrete(vc, name = NULL, ..., position = "bottom") v_scale_y_discrete(vc, name = NULL, ..., position = "left")
vc |
An htmlwidget created with |
name |
Title for the axis. |
... |
Additional parameters for the axis. |
position |
Position of the axis. |
A vchart()
htmlwidget
object.
library(vchartr)
library(vchartr)
Color scale for continuous data
v_scale_colour_gradient( vc, name = NULL, low = "#132B43", high = "#56B1F7", limits = NULL, position = c("right", "bottom", "left", "top"), align = c("middle", "start", "end") ) v_scale_fill_gradient( vc, name = NULL, low = "#132B43", high = "#56B1F7", limits = NULL, position = c("right", "bottom", "left", "top"), align = c("middle", "start", "end") )
v_scale_colour_gradient( vc, name = NULL, low = "#132B43", high = "#56B1F7", limits = NULL, position = c("right", "bottom", "left", "top"), align = c("middle", "start", "end") ) v_scale_fill_gradient( vc, name = NULL, low = "#132B43", high = "#56B1F7", limits = NULL, position = c("right", "bottom", "left", "top"), align = c("middle", "start", "end") )
vc |
An htmlwidget created with |
name |
Title for the legend. |
low , high
|
Colours for low and high ends of the gradient. |
limits |
Limits of the scale, default ( |
position |
Position of the legend. |
align |
Alignment of the legend. |
A vchart()
htmlwidget
object.
library(vchartr) data("penguins", package = "palmerpenguins") vchart(penguins) %>% v_scatter(aes( x = bill_length_mm, y = bill_depth_mm, color = body_mass_g )) %>% v_scale_colour_gradient( name = "Body mass", low = "yellow", high = "red" )
library(vchartr) data("penguins", package = "palmerpenguins") vchart(penguins) %>% v_scatter(aes( x = bill_length_mm, y = bill_depth_mm, color = body_mass_g )) %>% v_scale_colour_gradient( name = "Body mass", low = "yellow", high = "red" )
The dataset contains data about temperatures in France between 2018 and 2022.
temperatures
temperatures
A data frame with 365 observations and 6 variables.
The dataset contains data about CRAN downloads retrieved with cranlogs::cran_top_downloads.
top_cran_downloads
top_cran_downloads
A data frame with 100 observations and 5 variables.
This dataset represents the 10 countries with the highest electricity generation in 2023.
top_generation
top_generation
A data frame with 10 observations and 2 variables:
country
: Country name
electricity_generation
: Total electricity generation - Measured in terawatt-hours.
Create an Area Chart
v_area( vc, mapping = NULL, data = NULL, name = NULL, stack = FALSE, area = list(style = list(curveType = "linear", fill = NULL, fillOpacity = NULL)), point = list(visible = FALSE), line = list(visible = FALSE), ..., serie_id = NULL, data_id = NULL )
v_area( vc, mapping = NULL, data = NULL, name = NULL, stack = FALSE, area = list(style = list(curveType = "linear", fill = NULL, fillOpacity = NULL)), point = list(visible = FALSE), line = list(visible = FALSE), ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
stack |
Whether to stack the data or not (if |
area |
Area's options, such as curve interpolation type, see online documentation. |
point |
Options for showing points on lines or not. |
line |
Options for showing lines or not. |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Basic Area Chart vchart(eco2mix) %>% v_area(aes(date, solar)) # Two areas vchart(eco2mix, aes(date)) %>% v_area(aes(y = wind)) %>% v_area(aes(y = solar)) # Line chart with discrete x axis vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_area(aes(month, value)) # Fill color vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_area( aes(month, value), area = list( style = list(fill = "firebrick", fill_opacity = 0.9) ) ) # Smooth Area Chart vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_area( aes(month, value), area = list( style = list(curveType = "monotone") ) ) # Step Area Chart vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_area( aes(month, value), area = list( style = list(curveType = "stepAfter") ) ) # Multiple areas vchart(eco2mix_long) %>% v_area(aes(date, production, fill = source)) vchart(eco2mix_long) %>% v_area( aes(date, production, fill = source), stack = TRUE, area = list( style = list(fillOpacity = 1) ) ) # Range area chart vchart(temperatures, aes(date)) %>% v_area(aes(ymin = low, ymax = high)) %>% v_line(aes(y = average)) within(temperatures, {difference = `2024` - average}) %>% vchart(aes(date)) %>% v_area( aes(ymin = average, ymax = `2024`, difference = difference), area = list( style = list( fill = JS( "data => { return data.difference > 0 ? '#F68180' : '#2F64FF' ; }" ), fillOpacity = 1 ) ) )
library(vchartr) # Basic Area Chart vchart(eco2mix) %>% v_area(aes(date, solar)) # Two areas vchart(eco2mix, aes(date)) %>% v_area(aes(y = wind)) %>% v_area(aes(y = solar)) # Line chart with discrete x axis vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_area(aes(month, value)) # Fill color vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_area( aes(month, value), area = list( style = list(fill = "firebrick", fill_opacity = 0.9) ) ) # Smooth Area Chart vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_area( aes(month, value), area = list( style = list(curveType = "monotone") ) ) # Step Area Chart vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_area( aes(month, value), area = list( style = list(curveType = "stepAfter") ) ) # Multiple areas vchart(eco2mix_long) %>% v_area(aes(date, production, fill = source)) vchart(eco2mix_long) %>% v_area( aes(date, production, fill = source), stack = TRUE, area = list( style = list(fillOpacity = 1) ) ) # Range area chart vchart(temperatures, aes(date)) %>% v_area(aes(ymin = low, ymax = high)) %>% v_line(aes(y = average)) within(temperatures, {difference = `2024` - average}) %>% vchart(aes(date)) %>% v_area( aes(ymin = average, ymax = `2024`, difference = difference), area = list( style = list( fill = JS( "data => { return data.difference > 0 ? '#F68180' : '#2F64FF' ; }" ), fillOpacity = 1 ) ) )
Create a Bar Chart
v_bar( vc, mapping = NULL, data = NULL, name = NULL, stack = FALSE, percent = FALSE, direction = c("vertical", "horizontal"), ..., serie_id = NULL, data_id = NULL )
v_bar( vc, mapping = NULL, data = NULL, name = NULL, stack = FALSE, percent = FALSE, direction = c("vertical", "horizontal"), ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
stack |
Whether to stack the data or not (if |
percent |
Whether to display the data as a percentage. |
direction |
The direction configuration of the chart: |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Classic Bar Chart vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) # Horizontal Bar Chart vchart(top_generation) %>% v_bar(aes(country, electricity_generation), direction = "horizontal") # Grouped Bar Chart vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source)) # Horizontal Grouped Bar Chart vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source), direction = "horizontal") # Stacked Bar Chart vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source), stack = TRUE) # Percentage Stacked Bar Chart vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source), stack = TRUE, percent = TRUE)
library(vchartr) # Classic Bar Chart vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) # Horizontal Bar Chart vchart(top_generation) %>% v_bar(aes(country, electricity_generation), direction = "horizontal") # Grouped Bar Chart vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source)) # Horizontal Grouped Bar Chart vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source), direction = "horizontal") # Stacked Bar Chart vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source), stack = TRUE) # Percentage Stacked Bar Chart vchart(subset(world_electricity, type == "total")) %>% v_bar(aes(year, generation, fill = source), stack = TRUE, percent = TRUE)
Create a BoxPlot
v_boxplot( vc, mapping = NULL, data = NULL, name = NULL, ..., outliers = TRUE, args_outliers = NULL, serie_id = NULL, data_id = NULL )
v_boxplot( vc, mapping = NULL, data = NULL, name = NULL, ..., outliers = TRUE, args_outliers = NULL, serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
... |
Arguments passed to JavaScript methods. |
outliers |
Display or not outliers. |
args_outliers |
Arguments passed to |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) data("penguins", package = "palmerpenguins") vchart(penguins) %>% v_boxplot(aes(species, flipper_length_mm)) vchart(penguins) %>% v_boxplot(aes(species, flipper_length_mm, color = sex)) data("mpg", package = "ggplot2") vchart(mpg) %>% v_boxplot(aes(as.character(year), hwy)) vchart(mpg) %>% v_boxplot(aes(class, hwy)) vchart(mpg) %>% v_boxplot(aes(class, hwy, color = as.character(year)))
library(vchartr) data("penguins", package = "palmerpenguins") vchart(penguins) %>% v_boxplot(aes(species, flipper_length_mm)) vchart(penguins) %>% v_boxplot(aes(species, flipper_length_mm, color = sex)) data("mpg", package = "ggplot2") vchart(mpg) %>% v_boxplot(aes(as.character(year), hwy)) vchart(mpg) %>% v_boxplot(aes(class, hwy)) vchart(mpg) %>% v_boxplot(aes(class, hwy, color = as.character(year)))
Create a Circle Packing Chart
v_circlepacking( vc, mapping = NULL, data = NULL, name = NULL, drill = TRUE, use_root = FALSE, fill_opacity = JS("d => d.isLeaf ? 0.75 : 0.25;"), label_visible = JS("d => d.depth === 1;"), ..., serie_id = NULL, data_id = NULL )
v_circlepacking( vc, mapping = NULL, data = NULL, name = NULL, drill = TRUE, use_root = FALSE, fill_opacity = JS("d => d.isLeaf ? 0.75 : 0.25;"), label_visible = JS("d => d.depth === 1;"), ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
drill |
Drill-down function switch. |
use_root |
Add a root level in the hierarchy, can be |
fill_opacity |
Fill opacity, a JS function determining the opacity of the elements. |
label_visible |
A JS function to control visibility of labels. |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) vchart(countries_gdp) %>% v_circlepacking( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD) ) # With root level vchart(countries_gdp) %>% v_circlepacking( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD), use_root = "World" ) # Custom colors vchart(countries_gdp) %>% v_circlepacking( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD) ) %>% v_scale_color_manual(c( Oceania = "#E6AB02", Africa = "#1B9E77", Americas = "#D95F02", Asia = "#E7298A", Europe = "#66A61E", Antarctica = "#7570B3" )) # Bubble Chart vchart(countries_gdp) %>% v_circlepacking( aes(ADMIN, GDP_MD), label_visible = JS("d => d.value > 261921;"), # 261921 = 3rd Qu. )
library(vchartr) vchart(countries_gdp) %>% v_circlepacking( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD) ) # With root level vchart(countries_gdp) %>% v_circlepacking( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD), use_root = "World" ) # Custom colors vchart(countries_gdp) %>% v_circlepacking( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD) ) %>% v_scale_color_manual(c( Oceania = "#E6AB02", Africa = "#1B9E77", Americas = "#D95F02", Asia = "#E7298A", Europe = "#66A61E", Antarctica = "#7570B3" )) # Bubble Chart vchart(countries_gdp) %>% v_circlepacking( aes(ADMIN, GDP_MD), label_visible = JS("d => d.value > 261921;"), # 261921 = 3rd Qu. )
VChart events
v_event(vc, name, params, fun, ...)
v_event(vc, name, params, fun, ...)
vc |
A chart initialized with |
name |
Name of the event, e.g. |
params |
Parameters to specifically monitor events in a certain part of the chart. |
fun |
JavaScript function executed when the event occurs. |
... |
Not used. |
A vchart()
htmlwidget
object.
library(vchartr) vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_event( name = "click", params = list(level = "mark", type = "bar"), fun = JS( "e => {", " console.log(e);", " alert(e.datum.x);", "}" ) )
library(vchartr) vchart(top_generation) %>% v_bar(aes(country, electricity_generation)) %>% v_event( name = "click", params = list(level = "mark", type = "bar"), fun = JS( "e => {", " console.log(e);", " alert(e.datum.x);", "}" ) )
Create matrix of charts by row and column faceting variable (v_facet_grid
),
or by specified number of row and column for faceting variable(s) (v_facet_wrap
).
v_facet_wrap( vc, facets, nrow = NULL, ncol = NULL, scales = c("fixed", "free", "free_y", "free_x"), labeller = label_value )
v_facet_wrap( vc, facets, nrow = NULL, ncol = NULL, scales = c("fixed", "free", "free_y", "free_x"), labeller = label_value )
vc |
A chart initialized with |
facets |
Variable(s) to use for facetting, wrapped in |
nrow , ncol
|
Number of row and column in output matrix. |
scales |
Should scales be fixed ( |
labeller |
A function with one argument containing for each facet the value of the faceting variable. |
A vchart()
htmlwidget
object.
library(vchartr) library(ggplot2) # Use vars() to supply faceting variables: vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(class)) # Control the number of rows and columns with nrow and ncol vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(class), ncol = 3) # You can facet by multiple variables vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(cyl, drv)) # Use the `labeller` option to control how labels are printed: vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(cyl, drv), labeller = label_both) # To change the order in which the panels appear, change the levels # of the underlying factor. mpg$class2 <- reorder(mpg$class, mpg$displ) vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(class2), ncol = 3) # By default, the same scales are used for all panels. You can allow # scales to vary across the panels with the `scales` argument. vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(class), scales = "free")
library(vchartr) library(ggplot2) # Use vars() to supply faceting variables: vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(class)) # Control the number of rows and columns with nrow and ncol vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(class), ncol = 3) # You can facet by multiple variables vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(cyl, drv)) # Use the `labeller` option to control how labels are printed: vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(cyl, drv), labeller = label_both) # To change the order in which the panels appear, change the levels # of the underlying factor. mpg$class2 <- reorder(mpg$class, mpg$displ) vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(class2), ncol = 3) # By default, the same scales are used for all panels. You can allow # scales to vary across the panels with the `scales` argument. vchart(mpg) %>% v_scatter(aes(displ, hwy)) %>% v_facet_wrap(vars(class), scales = "free")
Create a Gauge Chart
v_gauge( vc, mapping = NULL, data = NULL, name = NULL, outerRadius = 0.8, innerRadius = 0.75, startAngle = -240, endAngle = 60, ..., serie_id = NULL, data_id = NULL )
v_gauge( vc, mapping = NULL, data = NULL, name = NULL, outerRadius = 0.8, innerRadius = 0.75, startAngle = -240, endAngle = 60, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
outerRadius |
Sector outer radius, with a numerical range of 0 - 1. |
innerRadius |
Sector inner radius, with a numerical range of 0 - 1. |
startAngle |
Starting angle of the sector. In degrees. |
endAngle |
Ending angle of the sector. In degrees. |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) vchart() %>% v_gauge(aes("My gauge", 0.8)) vchart() %>% v_gauge( aes("My gauge", 0.8), gauge = list( type = "circularProgress", cornerRadius = 20, progress = list( style = list( fill = "forestgreen" ) ), track = list( style = list( fill = "#BCBDBC" ) ) ), pointer = list( style = list( fill = "#2F2E2F" ) ) ) vchart() %>% v_gauge(aes("My gauge", 0.8)) %>% v_scale_y_continuous(labels = ".0%")
library(vchartr) vchart() %>% v_gauge(aes("My gauge", 0.8)) vchart() %>% v_gauge( aes("My gauge", 0.8), gauge = list( type = "circularProgress", cornerRadius = 20, progress = list( style = list( fill = "forestgreen" ) ), track = list( style = list( fill = "#BCBDBC" ) ) ), pointer = list( style = list( fill = "#2F2E2F" ) ) ) vchart() %>% v_gauge(aes("My gauge", 0.8)) %>% v_scale_y_continuous(labels = ".0%")
Create a Heatmap Chart
v_heatmap( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
v_heatmap( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Heatmap with continuous fill variable vchart(co2_emissions) %>% v_heatmap(aes(x = year, y = country, fill = co2_per_capita)) # Change colors vchart(co2_emissions) %>% v_heatmap(aes(x = year, y = country, fill = co2_per_capita)) %>% v_specs_colors( range = rev( c("#8C510A", "#BF812D", "#DFC27D", "#F6E8C3", "#C7EAE5", "#80CDC1", "#35978F", "#01665E") ) ) # Heatmap with discrete fill variable vchart(co2_emissions) %>% v_heatmap(aes(x = year, y = country, fill = co2_growth_change)) # Change colors vchart(co2_emissions) %>% v_heatmap(aes(x = year, y = country, fill = co2_growth_change)) %>% v_scale_fill_manual(c( Increase = "firebrick", Decrease = "forestgreen" ))
library(vchartr) # Heatmap with continuous fill variable vchart(co2_emissions) %>% v_heatmap(aes(x = year, y = country, fill = co2_per_capita)) # Change colors vchart(co2_emissions) %>% v_heatmap(aes(x = year, y = country, fill = co2_per_capita)) %>% v_specs_colors( range = rev( c("#8C510A", "#BF812D", "#DFC27D", "#F6E8C3", "#C7EAE5", "#80CDC1", "#35978F", "#01665E") ) ) # Heatmap with discrete fill variable vchart(co2_emissions) %>% v_heatmap(aes(x = year, y = country, fill = co2_growth_change)) # Change colors vchart(co2_emissions) %>% v_heatmap(aes(x = year, y = country, fill = co2_growth_change)) %>% v_scale_fill_manual(c( Increase = "firebrick", Decrease = "forestgreen" ))
Create an Histogram
v_hist( vc, mapping = NULL, data = NULL, name = NULL, stack = FALSE, bins = 30, binwidth = NULL, ..., serie_id = NULL, data_id = NULL )
v_hist( vc, mapping = NULL, data = NULL, name = NULL, stack = FALSE, bins = 30, binwidth = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
stack |
Whether to stack the data or not (if |
bins |
Number of bins. Overridden by |
binwidth |
The width of the bins. Can be specified as a numeric value
or as a function that calculates width from unscaled x. Here, "unscaled x"
refers to the original x values in the data, before application of any
scale transformation. When specifying a function along with a grouping
structure, the function will be called once per group.
The default is to use the number of bins in The bin width of a date variable is the number of days in each time; the bin width of a time variable is the number of seconds. |
... |
Additional properties for histogram bars. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) library(palmerpenguins) # Create an histogram using a numeric variable vchart(penguins) %>% v_hist(aes(flipper_length_mm)) # Customize some style properties vchart(penguins) %>% v_hist( aes(flipper_length_mm), bar = list( style = list( stroke = "white", line_width = 1, fill = "forestgreen" ) ) ) # Use fill aesthetic to differentiate series vchart(penguins) %>% v_hist(aes(flipper_length_mm, fill = species)) # Stack results vchart(penguins) %>% v_hist(aes(flipper_length_mm, fill = species), stack = TRUE) # Use custom colors vchart(penguins) %>% v_hist( aes(flipper_length_mm, fill = species), bar = list( style = list(opacity = 0.5) ) ) %>% v_scale_color_manual(c( Adelie = "#ffa232", Chinstrap = "#33a2a2", Gentoo = "#b34df2" ))
library(vchartr) library(palmerpenguins) # Create an histogram using a numeric variable vchart(penguins) %>% v_hist(aes(flipper_length_mm)) # Customize some style properties vchart(penguins) %>% v_hist( aes(flipper_length_mm), bar = list( style = list( stroke = "white", line_width = 1, fill = "forestgreen" ) ) ) # Use fill aesthetic to differentiate series vchart(penguins) %>% v_hist(aes(flipper_length_mm, fill = species)) # Stack results vchart(penguins) %>% v_hist(aes(flipper_length_mm, fill = species), stack = TRUE) # Use custom colors vchart(penguins) %>% v_hist( aes(flipper_length_mm, fill = species), bar = list( style = list(opacity = 0.5) ) ) %>% v_scale_color_manual(c( Adelie = "#ffa232", Chinstrap = "#33a2a2", Gentoo = "#b34df2" ))
Create Jittered Points Scatter Chart
v_jitter( vc, mapping = NULL, data = NULL, name = NULL, width = NULL, height = NULL, ..., serie_id = NULL, data_id = NULL )
v_jitter( vc, mapping = NULL, data = NULL, name = NULL, width = NULL, height = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
width , height
|
Amount of vertical and horizontal jitter. The jitter is added in both positive and negative directions, so the total spread is twice the value specified here. If omitted, defaults to 40% of the resolution of the data: this means the jitter values will occupy 80% of the implied bins. Categorical data is aligned on the integers, so a width or height of 0.5 will spread the data so it's not possible to see the distinction between the categories. |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) data("mpg", package = "ggplot2") data("penguins", package = "palmerpenguins") # With continuous x vchart(mpg) %>% v_jitter(aes(cyl, hwy)) # with discrete x vchart(penguins) %>% v_jitter(aes(species, bill_length_mm)) # Colour points vchart(mpg) %>% v_jitter(aes(cyl, hwy, colour = class)) # Use smaller width/height to emphasise categories vchart(mpg) %>% v_jitter(aes(cyl, hwy), width = 0.25) # Use larger width/height to completely smooth away discreteness vchart(mpg) %>% v_jitter(aes(cty, hwy), width = 0.5, height = 0.5)
library(vchartr) data("mpg", package = "ggplot2") data("penguins", package = "palmerpenguins") # With continuous x vchart(mpg) %>% v_jitter(aes(cyl, hwy)) # with discrete x vchart(penguins) %>% v_jitter(aes(species, bill_length_mm)) # Colour points vchart(mpg) %>% v_jitter(aes(cyl, hwy, colour = class)) # Use smaller width/height to emphasise categories vchart(mpg) %>% v_jitter(aes(cyl, hwy), width = 0.25) # Use larger width/height to completely smooth away discreteness vchart(mpg) %>% v_jitter(aes(cty, hwy), width = 0.5, height = 0.5)
Set chart title and subtitle
v_labs(vc, title = NULL, subtitle = NULL, x = NULL, y = NULL)
v_labs(vc, title = NULL, subtitle = NULL, x = NULL, y = NULL)
vc |
An htmlwidget created with |
title |
Title for the chart. |
subtitle |
Subtitle for the chart. |
x , y
|
Axes titles. |
A vchart()
htmlwidget
object.
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class), aes(Class, Freq)) %>% v_bar() %>% v_labs( title = "Title for the chart", subtitle = "A subtitle to be placed under the title" )
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class), aes(Class, Freq)) %>% v_bar() %>% v_labs( title = "Title for the chart", subtitle = "A subtitle to be placed under the title" )
Create a Line Chart
v_line( vc, mapping = NULL, data = NULL, name = NULL, line = list(style = list(curveType = "linear", lineDash = 0, stroke = NULL)), point = list(visible = FALSE), ..., serie_id = NULL, data_id = NULL )
v_line( vc, mapping = NULL, data = NULL, name = NULL, line = list(style = list(curveType = "linear", lineDash = 0, stroke = NULL)), point = list(visible = FALSE), ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
line |
Line's options, such as curve interpolation type, see online documentation |
point |
Options for showing points on lines or not. |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Basic Line Chart vchart(eco2mix) %>% v_line(aes(date, solar)) # Two lines vchart(tail(eco2mix, 30), aes(date)) %>% v_line(aes(y = solar)) %>% v_line(aes(y = wind)) # Line chart with discrete x axis vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line(aes(month, value)) # Stroke color vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line( aes(month, value), line = list(style = list(stroke = "firebrick")) ) # Smooth Line Chart vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line( aes(month, value), line = list(style = list(curveType = "monotone")) ) # Step Line Chart vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line( aes(month, value), line = list(style = list(curveType = "stepAfter")) ) # Dash array vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line( aes(month, value), line = list(style = list(lineDash = c(10, 10))) ) # Multiple lines vchart(eco2mix_long) %>% v_line(aes(date, production, color = source))
library(vchartr) # Basic Line Chart vchart(eco2mix) %>% v_line(aes(date, solar)) # Two lines vchart(tail(eco2mix, 30), aes(date)) %>% v_line(aes(y = solar)) %>% v_line(aes(y = wind)) # Line chart with discrete x axis vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line(aes(month, value)) # Stroke color vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line( aes(month, value), line = list(style = list(stroke = "firebrick")) ) # Smooth Line Chart vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line( aes(month, value), line = list(style = list(curveType = "monotone")) ) # Step Line Chart vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line( aes(month, value), line = list(style = list(curveType = "stepAfter")) ) # Dash array vchart(data.frame(month = month.abb, value = sample(1:50, 12))) %>% v_line( aes(month, value), line = list(style = list(lineDash = c(10, 10))) ) # Multiple lines vchart(eco2mix_long) %>% v_line(aes(date, production, color = source))
Create a Pie Chart
v_pie( vc, mapping = NULL, data = NULL, name = NULL, label = list(visible = TRUE), ..., serie_id = NULL, data_id = NULL )
v_pie( vc, mapping = NULL, data = NULL, name = NULL, label = list(visible = TRUE), ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
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 |
A vchart()
htmlwidget
object.
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 ) ) )
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 ) ) )
Create a Progress Chart
v_progress( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
v_progress( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) vchart() %>% v_progress(aes(0.85, "My progress")) data.frame( x = c(0.4, 0.3, 0.8, 0.6), y = paste("Course", 1:4) ) %>% vchart() %>% v_progress( aes(x, y), cornerRadius = 20, bandWidth = 30 ) %>% v_scale_y_discrete( label = list(visible = TRUE), domainLine = list(visible = FALSE) )
library(vchartr) vchart() %>% v_progress(aes(0.85, "My progress")) data.frame( x = c(0.4, 0.3, 0.8, 0.6), y = paste("Course", 1:4) ) %>% vchart() %>% v_progress( aes(x, y), cornerRadius = 20, bandWidth = 30 ) %>% v_scale_y_discrete( label = list(visible = TRUE), domainLine = list(visible = FALSE) )
Create a Radar Chart
v_radar( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
v_radar( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Default radar chart subset(electricity_mix, country == "Germany") %>% vchart() %>% v_radar(aes(source, generation)) # Without area subset(electricity_mix, country == "Germany") %>% vchart() %>% v_radar( aes(source, generation), area = list(visible = FALSE) ) # Mutliple series subset(electricity_mix, country %in% c("Germany", "Canada")) %>% vchart() %>% v_radar(aes(source, generation, color = country)) # Custom axes subset(electricity_mix, country == "Germany") %>% vchart() %>% v_radar(aes(source, generation)) %>% v_scale_y_continuous(min = 0, max = 200) subset(electricity_mix, country == "Germany") %>% vchart() %>% v_radar(aes(source, generation)) %>% v_scale_y_continuous( grid = list(smooth = FALSE), domainLine = list(visible = FALSE) ) %>% v_scale_x_discrete( label = list(space = 20), domainLine = list(visible = FALSE) )
library(vchartr) # Default radar chart subset(electricity_mix, country == "Germany") %>% vchart() %>% v_radar(aes(source, generation)) # Without area subset(electricity_mix, country == "Germany") %>% vchart() %>% v_radar( aes(source, generation), area = list(visible = FALSE) ) # Mutliple series subset(electricity_mix, country %in% c("Germany", "Canada")) %>% vchart() %>% v_radar(aes(source, generation, color = country)) # Custom axes subset(electricity_mix, country == "Germany") %>% vchart() %>% v_radar(aes(source, generation)) %>% v_scale_y_continuous(min = 0, max = 200) subset(electricity_mix, country == "Germany") %>% vchart() %>% v_radar(aes(source, generation)) %>% v_scale_y_continuous( grid = list(smooth = FALSE), domainLine = list(visible = FALSE) ) %>% v_scale_x_discrete( label = list(space = 20), domainLine = list(visible = FALSE) )
Create a Sankey Chart
v_sankey( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
v_sankey( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Basic Sankey Chart vchart(energy_sankey) %>% v_sankey(aes(target, source, value = value)) # Some options vchart(energy_sankey) %>% v_sankey( aes(target, source, value = value), nodeAlign = "left", nodeGap = 8, nodeWidth = 10, minNodeHeight = 4, link = list( state = list( hover = list( fillOpacity = 1 ) ) ) ) # With data as tree structure titanic <- as.data.frame(Titanic) vchart(titanic) %>% v_sankey(aes( lvl1 = Class, lvl2 = Sex, lvl3 = Age, lvl4 = Survived, value = Freq )) # Only one level titanic_class <- titanic %>% aggregate(data = ., Freq ~ Class + Survived, FUN = sum) vchart(titanic_class) %>% v_sankey(aes(Survived, Class, value = Freq))
library(vchartr) # Basic Sankey Chart vchart(energy_sankey) %>% v_sankey(aes(target, source, value = value)) # Some options vchart(energy_sankey) %>% v_sankey( aes(target, source, value = value), nodeAlign = "left", nodeGap = 8, nodeWidth = 10, minNodeHeight = 4, link = list( state = list( hover = list( fillOpacity = 1 ) ) ) ) # With data as tree structure titanic <- as.data.frame(Titanic) vchart(titanic) %>% v_sankey(aes( lvl1 = Class, lvl2 = Sex, lvl3 = Age, lvl4 = Survived, value = Freq )) # Only one level titanic_class <- titanic %>% aggregate(data = ., Freq ~ Class + Survived, FUN = sum) vchart(titanic_class) %>% v_sankey(aes(Survived, Class, value = Freq))
Size scale for continuous data
v_scale_size( vc, name = NULL, range = c(5, 30), ..., position = c("right", "bottom", "left", "top"), align = c("middle", "start", "end") )
v_scale_size( vc, name = NULL, range = c(5, 30), ..., position = c("right", "bottom", "left", "top"), align = c("middle", "start", "end") )
vc |
An htmlwidget created with |
name |
Title for the legend. |
range |
Range of sizes for the points plotted. |
... |
Additional parameters for the legend. |
position |
Position of the legend. |
align |
Alignment of the legend. |
A vchart()
htmlwidget
object.
library(vchartr) data("penguins", package = "palmerpenguins") vchart(penguins) %>% v_scatter(aes( x = bill_length_mm, y = bill_depth_mm, size = body_mass_g )) %>% v_scale_size( name = "Body mass", range = c(1, 20) )
library(vchartr) data("penguins", package = "palmerpenguins") vchart(penguins) %>% v_scatter(aes( x = bill_length_mm, y = bill_depth_mm, size = body_mass_g )) %>% v_scale_size( name = "Body mass", range = c(1, 20) )
Create a Scatter Chart
v_scatter( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
v_scatter( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) data("penguins", package = "palmerpenguins") # Basic scatter chart vchart(penguins) %>% v_scatter(aes(x = flipper_length_mm, y = body_mass_g)) # Color series with discrete values vchart(penguins) %>% v_scatter(aes(x = flipper_length_mm, y = body_mass_g, color = species)) # Color series with continuous values vchart(penguins) %>% v_scatter(aes(x = bill_length_mm, y = bill_depth_mm, color = body_mass_g)) # Size of points vchart(penguins) %>% v_scatter(aes(x = bill_length_mm, y = bill_depth_mm, size = body_mass_g)) # Size and color vchart(penguins) %>% v_scatter(aes( x = bill_length_mm, y = bill_depth_mm, color = body_mass_g, size = body_mass_g )) # With shapes vchart(penguins) %>% v_scatter( aes( x = bill_length_mm, y = bill_depth_mm, color = species, shape = species ) ) vchart(penguins) %>% v_scatter( aes(x = flipper_length_mm, y = body_mass_g, color = species) ) %>% v_scale_color_manual(c( Adelie = "#ffa232", Chinstrap = "#33a2a2", Gentoo = "#b34df2" ))
library(vchartr) data("penguins", package = "palmerpenguins") # Basic scatter chart vchart(penguins) %>% v_scatter(aes(x = flipper_length_mm, y = body_mass_g)) # Color series with discrete values vchart(penguins) %>% v_scatter(aes(x = flipper_length_mm, y = body_mass_g, color = species)) # Color series with continuous values vchart(penguins) %>% v_scatter(aes(x = bill_length_mm, y = bill_depth_mm, color = body_mass_g)) # Size of points vchart(penguins) %>% v_scatter(aes(x = bill_length_mm, y = bill_depth_mm, size = body_mass_g)) # Size and color vchart(penguins) %>% v_scatter(aes( x = bill_length_mm, y = bill_depth_mm, color = body_mass_g, size = body_mass_g )) # With shapes vchart(penguins) %>% v_scatter( aes( x = bill_length_mm, y = bill_depth_mm, color = species, shape = species ) ) vchart(penguins) %>% v_scatter( aes(x = flipper_length_mm, y = body_mass_g, color = species) ) %>% v_scale_color_manual(c( Adelie = "#ffa232", Chinstrap = "#33a2a2", Gentoo = "#b34df2" ))
Create an Smooth Line Chart
v_smooth( vc, mapping = NULL, data = NULL, name = NULL, method = NULL, formula = NULL, se = TRUE, n = 80, span = 0.75, ..., args_area = NULL, serie_id = NULL, data_id = NULL )
v_smooth( vc, mapping = NULL, data = NULL, name = NULL, method = NULL, formula = NULL, se = TRUE, n = 80, span = 0.75, ..., args_area = NULL, serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
method |
Smoothing method (function) to use, accepts either
For If you have fewer than 1,000 observations but want to use the same |
formula |
Formula to use in smoothing function, eg. |
se |
Display confidence interval around smooth? ( |
n |
Number of points at which to evaluate smoother. |
span |
Controls the amount of smoothing for the default loess smoother.
Smaller numbers produce wigglier lines, larger numbers produce smoother
lines. Only used with loess, i.e. when |
... |
Additional parameters for lines. |
args_area |
Arguments for area. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) data("mpg", package = "ggplot2") vchart(mpg, aes(displ, hwy)) %>% v_smooth() vchart(mpg, aes(displ, hwy)) %>% v_smooth(se = FALSE) vchart(mpg, aes(displ, hwy, color = class)) %>% v_smooth()
library(vchartr) data("mpg", package = "ggplot2") vchart(mpg, aes(displ, hwy)) %>% v_smooth() vchart(mpg, aes(displ, hwy)) %>% v_smooth(se = FALSE) vchart(mpg, aes(displ, hwy, color = class)) %>% v_smooth()
vchart()
.Specify configuration options for a vchart()
.
v_specs(vc, ..., serie_id = NULL, drop_nulls = FALSE)
v_specs(vc, ..., serie_id = NULL, drop_nulls = FALSE)
vc |
An htmlwidget created with |
... |
List of options to specify for the chart, see https://www.visactor.io/vchart/option/. |
serie_id |
Used to set or modify options for a chart where there are multiple series. You can use :
|
drop_nulls |
Drop NULL elements from the options. |
A vchart()
htmlwidget
object.
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class)) %>% v_bar(aes(Class, Freq)) %>% v_specs( label = list(visible = TRUE), color = list("firebrick") )
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class)) %>% v_bar(aes(Class, Freq)) %>% v_specs( label = list(visible = TRUE), color = list("firebrick") )
Axes configuration
v_specs_axes( vc, position = c("left", "bottom", "right", "top", "angle", "radius"), ..., remove = FALSE )
v_specs_axes( vc, position = c("left", "bottom", "right", "top", "angle", "radius"), ..., remove = FALSE )
vc |
An htmlwidget created with |
position |
Position of the axe on the chart. |
... |
Configuration options. |
remove |
If |
A vchart()
htmlwidget
object.
library(vchartr) # Configure some options for axes vchart() %>% v_line(aes(x = month.name, y = sample(5:25, 12))) %>% v_specs_axes( position = "left", title = list( visible = TRUE, text = "Y axis title", position = "start" ), label = list( formatMethod = JS("val => `${val}°C`") ), domainLine = list( visible = TRUE, style = list(stroke = "#000") ), tick = list( visible = TRUE, tickStep = 2, tickSize = 6, style = list(stroke = "#000") ), grid = list( visible = TRUE, style = list(lineDash = list(0), stroke = "#6E6E6E", zIndex = 100) ) )%>% v_specs_axes( position = "bottom", title = list( visible = TRUE, text = "X axis title", position = "end" ), domainLine = list( visible = TRUE, style = list(stroke = "#000") ), tick = list( visible = TRUE, tickStep = 2, tickSize = 6, style = list(stroke = "#000") ), grid = list( visible = TRUE, style = list(lineDash = list(0)), alternateColor = c("#F2F2F2", "#FFFFFF"), alignWithLabel = TRUE ) ) # By default vline add an axe on the left vchart() %>% v_line(aes(x = month.name, y = sample(5:25, 12))) %>% v_specs_axes(position = "left", remove = TRUE) %>% v_specs_axes(position = "right", type = "linear") # Use secondary axes vchart() %>% v_line(aes(x = month.name, y = sample(5:25, 12)), serie_id = "serie_left") %>% v_line(aes(x = month.name, y = sample(5:25 * 100, 12)), serie_id = "serie_right") %>% v_specs_axes(position = "left", seriesId = "serie_left") %>% v_specs_axes(position = "right", type = "linear", seriesId = "serie_right")
library(vchartr) # Configure some options for axes vchart() %>% v_line(aes(x = month.name, y = sample(5:25, 12))) %>% v_specs_axes( position = "left", title = list( visible = TRUE, text = "Y axis title", position = "start" ), label = list( formatMethod = JS("val => `${val}°C`") ), domainLine = list( visible = TRUE, style = list(stroke = "#000") ), tick = list( visible = TRUE, tickStep = 2, tickSize = 6, style = list(stroke = "#000") ), grid = list( visible = TRUE, style = list(lineDash = list(0), stroke = "#6E6E6E", zIndex = 100) ) )%>% v_specs_axes( position = "bottom", title = list( visible = TRUE, text = "X axis title", position = "end" ), domainLine = list( visible = TRUE, style = list(stroke = "#000") ), tick = list( visible = TRUE, tickStep = 2, tickSize = 6, style = list(stroke = "#000") ), grid = list( visible = TRUE, style = list(lineDash = list(0)), alternateColor = c("#F2F2F2", "#FFFFFF"), alignWithLabel = TRUE ) ) # By default vline add an axe on the left vchart() %>% v_line(aes(x = month.name, y = sample(5:25, 12))) %>% v_specs_axes(position = "left", remove = TRUE) %>% v_specs_axes(position = "right", type = "linear") # Use secondary axes vchart() %>% v_line(aes(x = month.name, y = sample(5:25, 12)), serie_id = "serie_left") %>% v_line(aes(x = month.name, y = sample(5:25 * 100, 12)), serie_id = "serie_right") %>% v_specs_axes(position = "left", seriesId = "serie_left") %>% v_specs_axes(position = "right", type = "linear", seriesId = "serie_right")
Set color(s) for chart
v_specs_colors(vc, ...)
v_specs_colors(vc, ...)
vc |
An htmlwidget created with |
... |
Colors options, can be a single color code, a vector of colors to use or a list with more options.
For |
A vchart()
htmlwidget
object.
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class)) %>% v_bar(aes(Class, Freq)) %>% v_specs_colors("#8FBCBB")
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class)) %>% v_bar(aes(Class, Freq)) %>% v_specs_colors("#8FBCBB")
Add crosshair to chart
v_specs_crosshair(vc, ...)
v_specs_crosshair(vc, ...)
vc |
An htmlwidget created with |
... |
Options for the legend, see examples or online documentation. |
A vchart()
htmlwidget
object.
library(vchartr) data.frame(month = month.abb, value = sample(1:50, 12)) %>% vchart() %>% v_line(aes(month, value)) %>% v_specs_crosshair( xField = list( visible = TRUE, line = list(type = "rect"), defaultSelect = list( axisIndex = 0, datum = "May" ), label = list(visible = TRUE) ), yField = list( visible = TRUE, defaultSelect = list( axisIndex = 1, datum = 30 ), line = list( style = list( lineWidth = 1, opacity = 1, stroke = "#000", lineDash = c(2, 2) ) ), label = list(visible = TRUE) ) )
library(vchartr) data.frame(month = month.abb, value = sample(1:50, 12)) %>% vchart() %>% v_line(aes(month, value)) %>% v_specs_crosshair( xField = list( visible = TRUE, line = list(type = "rect"), defaultSelect = list( axisIndex = 0, datum = "May" ), label = list(visible = TRUE) ), yField = list( visible = TRUE, defaultSelect = list( axisIndex = 1, datum = 30 ), line = list( style = list( lineWidth = 1, opacity = 1, stroke = "#000", lineDash = c(2, 2) ) ), label = list(visible = TRUE) ) )
Add custom mark to chart
v_specs_custom_mark(vc, ...)
v_specs_custom_mark(vc, ...)
vc |
An htmlwidget created with |
... |
Options for the legend, see examples or online documentation. |
A vchart()
htmlwidget
object.
library(vchartr) world_electricity %>% subset(type == "detail") %>% vchart() %>% v_bar( aes(source, generation, player = year), direction = "h", data_id = "mydata" ) %>% v_specs_custom_mark( type = "text", dataId = "mydata", style = list( textBaseline = "bottom", fontSize = 60, textAlign = "right", fontWeight = 700, text = JS("datum => datum.player"), x = JS( "(datum, ctx) => {", " return ctx.vchart.getChart().getCanvasRect().width - 50;", "}" ), y = JS( "(datum, ctx) => {", " return ctx.vchart.getChart().getCanvasRect().height - 150;", "}" ), fill = "grey", fillOpacity = 0.5 ) )
library(vchartr) world_electricity %>% subset(type == "detail") %>% vchart() %>% v_bar( aes(source, generation, player = year), direction = "h", data_id = "mydata" ) %>% v_specs_custom_mark( type = "text", dataId = "mydata", style = list( textBaseline = "bottom", fontSize = 60, textAlign = "right", fontWeight = 700, text = JS("datum => datum.player"), x = JS( "(datum, ctx) => {", " return ctx.vchart.getChart().getCanvasRect().width - 50;", "}" ), y = JS( "(datum, ctx) => {", " return ctx.vchart.getChart().getCanvasRect().height - 150;", "}" ), fill = "grey", fillOpacity = 0.5 ) )
Add data zoom to a chart
v_specs_datazoom( vc, start = "{label:%Y-%m-%d}", end = "{label:%Y-%m-%d}", ..., brush = TRUE )
v_specs_datazoom( vc, start = "{label:%Y-%m-%d}", end = "{label:%Y-%m-%d}", ..., brush = TRUE )
vc |
A chart created with |
start , end
|
Formatter for the start/end label, e.g. : |
... |
Additional parameters for dataZoom property, see online documentation. |
brush |
Logical, add the ability to brush the chart to zoom in. |
A vchart()
htmlwidget
object.
library(vchartr) data("economics", package = "ggplot2") vchart(economics, aes(date, unemploy)) %>% v_line() %>% v_specs_datazoom() co2_emissions %>% subset(country %in% c("China", "United States", "India")) %>% vchart() %>% v_line(aes(year, co2, color = country)) %>% v_specs_datazoom(start = "{label:.0f}", startValue = 1990, end = "{label:.0f}")
library(vchartr) data("economics", package = "ggplot2") vchart(economics, aes(date, unemploy)) %>% v_line() %>% v_specs_datazoom() co2_emissions %>% subset(country %in% c("China", "United States", "India")) %>% vchart() %>% v_line(aes(year, co2, color = country)) %>% v_specs_datazoom(start = "{label:.0f}", startValue = 1990, end = "{label:.0f}")
Add indicator to chart
v_specs_indicator(vc, ...)
v_specs_indicator(vc, ...)
vc |
An htmlwidget created with |
... |
Options for the legend, see examples or online documentation. |
A vchart()
htmlwidget
object.
library(vchartr) electricity_mix %>% subset(country == "France") %>% vchart() %>% v_pie( aes(x = source, y = generation), outerRadius = 0.8, innerRadius = 0.5, padAngle = 0.6 ) %>% v_specs_tooltip(visible = FALSE) %>% v_specs_indicator( visible = TRUE, trigger = "hover", limitRatio = 0.5, title = list( visible = TRUE, autoFit = TRUE, fitStrategy = "inscribed", style = list( fontWeight = "bolder", fill = "#888", text = JS("datum => datum !== null ? datum.x : ''") ) ), content = list( list( visible = TRUE, autoFit = TRUE, fitStrategy = "inscribed", style = list( fontWeight = "bolder", fill = "#000", text = JS("datum => datum !== null ? Math.round(datum.y) + 'TWh' : ''") ) ) ) )
library(vchartr) electricity_mix %>% subset(country == "France") %>% vchart() %>% v_pie( aes(x = source, y = generation), outerRadius = 0.8, innerRadius = 0.5, padAngle = 0.6 ) %>% v_specs_tooltip(visible = FALSE) %>% v_specs_indicator( visible = TRUE, trigger = "hover", limitRatio = 0.5, title = list( visible = TRUE, autoFit = TRUE, fitStrategy = "inscribed", style = list( fontWeight = "bolder", fill = "#888", text = JS("datum => datum !== null ? datum.x : ''") ) ), content = list( list( visible = TRUE, autoFit = TRUE, fitStrategy = "inscribed", style = list( fontWeight = "bolder", fill = "#000", text = JS("datum => datum !== null ? Math.round(datum.y) + 'TWh' : ''") ) ) ) )
Set legend options
v_specs_legend(vc, ..., add = FALSE)
v_specs_legend(vc, ..., add = FALSE)
vc |
An htmlwidget created with |
... |
Options for the legend, see examples or online documentation. |
add |
Add the legend to exiting ones or overwrite all previous legends. |
A vchart()
htmlwidget
object.
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class, Year = mpg$year)) %>% v_bar(aes(Class, Freq, fill = Year)) %>% v_specs_legend( title = list(text = "Title", visible = TRUE), orient = "right", position = "start", item = list(focus = TRUE) )
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class, Year = mpg$year)) %>% v_bar(aes(Class, Freq, fill = Year)) %>% v_specs_legend( title = list(text = "Title", visible = TRUE), orient = "right", position = "start", item = list(focus = TRUE) )
Set player options
v_specs_player(vc, ...)
v_specs_player(vc, ...)
vc |
An htmlwidget created with |
... |
Options for the legend, see examples or online documentation. |
A vchart()
htmlwidget
object.
library(vchartr) world_electricity %>% subset(type == "detail") %>% vchart() %>% v_bar( aes(source, generation, player = year) )
library(vchartr) world_electricity %>% subset(type == "detail") %>% vchart() %>% v_bar( aes(source, generation, player = year) )
Set tooltip options
v_specs_tooltip(vc, ..., .reset = FALSE)
v_specs_tooltip(vc, ..., .reset = FALSE)
vc |
An htmlwidget created with |
... |
Options for the tooltip, see examples or online documentation. |
.reset |
Reset previous tooltip configuration before updating. |
A vchart()
htmlwidget
object.
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class, Year = mpg$year)) %>% v_bar(aes(Class, Freq, fill = Year)) %>% v_specs_tooltip( visible = FALSE )
library(vchartr) data("mpg", package = "ggplot2") vchart(table(Class = mpg$class, Year = mpg$year)) %>% v_bar(aes(Class, Freq, fill = Year)) %>% v_specs_tooltip( visible = FALSE )
Create a Sunburst Chart
v_sunburst( vc, mapping = NULL, data = NULL, name = NULL, drill = TRUE, gap = 5, ..., serie_id = NULL, data_id = NULL )
v_sunburst( vc, mapping = NULL, data = NULL, name = NULL, drill = TRUE, gap = 5, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
drill |
Drill-down function switch. |
gap |
Layer gap, supports passing an array to configure layer gaps layer by layer. |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Create a sunburst and auto hide labels vchart(countries_gdp) %>% v_sunburst( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD), gap = 10, labelAutoVisible = list( enable = TRUE ), labelLayout = list( align = "center", rotate = "radial" ) ) # Custom tooltip vchart(countries_gdp) %>% v_sunburst( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD) ) %>% v_specs_tooltip( mark = list( title = list( value = JS("val => val?.datum?.map(data => data.name).join(' / ')") ) ) ) # Custom layout options vchart(countries_gdp) %>% v_sunburst( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD), gap = 0, innerRadius = c(0, 0.4, 0.8), outerRadius = c(0.3, 0.7, 0.85), labelAutoVisible = list( enable = TRUE, circumference = 1 ), labelLayout = list( list( align = "center", rotate = "tangential", offset = 0 ), NULL, list( align = "start", rotate = "radial", offset = 15 ) ) ) %>% v_specs(padding = 70)
library(vchartr) # Create a sunburst and auto hide labels vchart(countries_gdp) %>% v_sunburst( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD), gap = 10, labelAutoVisible = list( enable = TRUE ), labelLayout = list( align = "center", rotate = "radial" ) ) # Custom tooltip vchart(countries_gdp) %>% v_sunburst( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD) ) %>% v_specs_tooltip( mark = list( title = list( value = JS("val => val?.datum?.map(data => data.name).join(' / ')") ) ) ) # Custom layout options vchart(countries_gdp) %>% v_sunburst( aes(lvl1 = REGION_UN, lvl2 = SUBREGION, lvl3 = ADMIN, value = GDP_MD), gap = 0, innerRadius = c(0, 0.4, 0.8), outerRadius = c(0.3, 0.7, 0.85), labelAutoVisible = list( enable = TRUE, circumference = 1 ), labelLayout = list( list( align = "center", rotate = "tangential", offset = 0 ), NULL, list( align = "start", rotate = "radial", offset = 15 ) ) ) %>% v_specs(padding = 70)
Theme for Charts
v_theme( vc, .colorPalette = NULL, .backgroundColor = NULL, .borderColor = NULL, .shadowColor = NULL, .hoverBackgroundColor = NULL, .sliderRailColor = NULL, .sliderHandleColor = NULL, .sliderTrackColor = NULL, .popupBackgroundColor = NULL, .primaryFontColor = NULL, .secondaryFontColor = NULL, .tertiaryFontColor = NULL, .axisLabelFontColor = NULL, .disableFontColor = NULL, .axisMarkerFontColor = NULL, .axisGridColor = NULL, .axisDomainColor = NULL, .dataZoomHandleStrokeColor = NULL, .dataZoomChartColor = NULL, .playerControllerColor = NULL, .scrollBarSliderColor = NULL, .axisMarkerBackgroundColor = NULL, .markLabelBackgroundColor = NULL, .markLineStrokeColor = NULL, .dangerColor = NULL, .warningColor = NULL, .successColor = NULL, .infoColor = NULL, .discreteLegendPagerTextColor = NULL, .discreteLegendPagerHandlerColor = NULL, .discreteLegendPagerHandlerDisableColor = NULL, ... )
v_theme( vc, .colorPalette = NULL, .backgroundColor = NULL, .borderColor = NULL, .shadowColor = NULL, .hoverBackgroundColor = NULL, .sliderRailColor = NULL, .sliderHandleColor = NULL, .sliderTrackColor = NULL, .popupBackgroundColor = NULL, .primaryFontColor = NULL, .secondaryFontColor = NULL, .tertiaryFontColor = NULL, .axisLabelFontColor = NULL, .disableFontColor = NULL, .axisMarkerFontColor = NULL, .axisGridColor = NULL, .axisDomainColor = NULL, .dataZoomHandleStrokeColor = NULL, .dataZoomChartColor = NULL, .playerControllerColor = NULL, .scrollBarSliderColor = NULL, .axisMarkerBackgroundColor = NULL, .markLabelBackgroundColor = NULL, .markLineStrokeColor = NULL, .dangerColor = NULL, .warningColor = NULL, .successColor = NULL, .infoColor = NULL, .discreteLegendPagerTextColor = NULL, .discreteLegendPagerHandlerColor = NULL, .discreteLegendPagerHandlerDisableColor = NULL, ... )
vc |
An htmlwidget created with |
.colorPalette |
Vector of colors to use as default. |
.backgroundColor |
background Color |
.borderColor |
border Color |
.shadowColor |
shadow Color |
.hoverBackgroundColor |
hoverBackground Color |
.sliderRailColor |
slider Rail Color |
.sliderHandleColor |
slider Handle Color |
.sliderTrackColor |
slider Track Color |
.popupBackgroundColor |
popup Background Color |
.primaryFontColor |
primary Font Color |
.secondaryFontColor |
secondary Font Color |
.tertiaryFontColor |
tertiary Font Color |
.axisLabelFontColor |
axisLabel Font Color |
.disableFontColor |
disable Font Color |
.axisMarkerFontColor |
axis Marker Font Color |
.axisGridColor |
axis Grid Color |
.axisDomainColor |
axis Domain Color |
.dataZoomHandleStrokeColor |
data Zoom Handle Stroke Color |
.dataZoomChartColor |
data Zoom Chart Color |
.playerControllerColor |
player Controller Color |
.scrollBarSliderColor |
scroll Bar Slider Color |
.axisMarkerBackgroundColor |
axis Marker Background Color |
.markLabelBackgroundColor |
mark Label Background Color |
.markLineStrokeColor |
mark Line Stroke Color |
.dangerColor |
danger Color |
.warningColor |
warning Color |
.successColor |
success Color |
.infoColor |
info Color |
.discreteLegendPagerTextColor |
discrete Legend Pager Text Color |
.discreteLegendPagerHandlerColor |
discrete Legend Pager Handler Color |
.discreteLegendPagerHandlerDisableColor |
discrete Legend Pager Handler Disable Color |
... |
Other parameters. |
A vchart()
htmlwidget
object.
library(vchartr) chart <- subset( electricity_mix, country %in% c("Germany", "Brazil", "South Korea") ) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) # Default appearance chart # Change background color chart %>% v_theme(.backgroundColor = "#2F2E2F") # Change default color palette chart %>% v_theme( .colorPalette = palette.colors(n = 8, palette = "Okabe-Ito")[-1] ) # Axis grid color chart %>% v_theme(.axisGridColor = "red") # same as chart %>% v_theme( component = list( axis = list( grid = list( style = list( # lineWidth = 3, # but more options available stroke = "red" ) ) ) ) ) # see https://www.unpkg.com/@visactor/[email protected]/public/light.json # for all possibilities
library(vchartr) chart <- subset( electricity_mix, country %in% c("Germany", "Brazil", "South Korea") ) %>% vchart() %>% v_bar(aes(country, generation, fill = source)) # Default appearance chart # Change background color chart %>% v_theme(.backgroundColor = "#2F2E2F") # Change default color palette chart %>% v_theme( .colorPalette = palette.colors(n = 8, palette = "Okabe-Ito")[-1] ) # Axis grid color chart %>% v_theme(.axisGridColor = "red") # same as chart %>% v_theme( component = list( axis = list( grid = list( style = list( # lineWidth = 3, # but more options available stroke = "red" ) ) ) ) ) # see https://www.unpkg.com/@visactor/[email protected]/public/light.json # for all possibilities
Create a Treemap Chart
v_treemap( vc, mapping = NULL, data = NULL, name = NULL, drill = TRUE, ..., serie_id = NULL, data_id = NULL )
v_treemap( vc, mapping = NULL, data = NULL, name = NULL, drill = TRUE, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
drill |
Drill-down function switch. |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Basic Treemap Chart vchart(countries_gdp) %>% v_treemap(aes(lvl1 = REGION_UN, lvl2 = ADMIN, value = GDP_MD)) # With labels vchart(countries_gdp) %>% v_treemap( aes(lvl1 = REGION_UN, lvl2 = ADMIN, value = GDP_MD), label = list(visible = TRUE) ) # Show all levels vchart(countries_gdp) %>% v_treemap( aes(lvl1 = REGION_UN, lvl2 = ADMIN, value = GDP_MD), label = list(visible = TRUE), nonLeaf = list(visible = TRUE), nonLeafLabel = list(visible = TRUE, position = "top") )
library(vchartr) # Basic Treemap Chart vchart(countries_gdp) %>% v_treemap(aes(lvl1 = REGION_UN, lvl2 = ADMIN, value = GDP_MD)) # With labels vchart(countries_gdp) %>% v_treemap( aes(lvl1 = REGION_UN, lvl2 = ADMIN, value = GDP_MD), label = list(visible = TRUE) ) # Show all levels vchart(countries_gdp) %>% v_treemap( aes(lvl1 = REGION_UN, lvl2 = ADMIN, value = GDP_MD), label = list(visible = TRUE), nonLeaf = list(visible = TRUE), nonLeafLabel = list(visible = TRUE, position = "top") )
Create a Venn Diagram
v_venn( vc, mapping = NULL, data = NULL, name = NULL, sets_sep = ",", ..., serie_id = NULL, data_id = NULL )
v_venn( vc, mapping = NULL, data = NULL, name = NULL, sets_sep = ",", ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
sets_sep |
Sets separator. |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) # Venn diagram with 2 sets data.frame( sets = c("A", "B", "A,B"), value = c(5, 10, 4) ) %>% vchart() %>% v_venn(aes(sets = sets, value = value)) # with more sets data.frame( sets = c("A", "B", "C", "A,B", "A,C", "B,C", "A,B,C"), value = c(8, 10, 12, 4, 4, 4, 2) ) %>% vchart() %>% v_venn(aes(sets = sets, value = value)) # More complex example set.seed(20190708) genes <- paste("gene",1:1000,sep="") genes <- list( A = sample(genes,300), B = sample(genes,525), C = sample(genes,440), D = sample(genes,350) ) vchart(stack(genes)) %>% v_venn(aes(category = ind, values = values))
library(vchartr) # Venn diagram with 2 sets data.frame( sets = c("A", "B", "A,B"), value = c(5, 10, 4) ) %>% vchart() %>% v_venn(aes(sets = sets, value = value)) # with more sets data.frame( sets = c("A", "B", "C", "A,B", "A,C", "B,C", "A,B,C"), value = c(8, 10, 12, 4, 4, 4, 2) ) %>% vchart() %>% v_venn(aes(sets = sets, value = value)) # More complex example set.seed(20190708) genes <- paste("gene",1:1000,sep="") genes <- list( A = sample(genes,300), B = sample(genes,525), C = sample(genes,440), D = sample(genes,350) ) vchart(stack(genes)) %>% v_venn(aes(category = ind, values = values))
Create a Waterfall Chart
v_waterfall( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
v_waterfall( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) balance <- data.frame( desc = c("Starting Cash", "Sales", "Refunds", "Payouts", "Court Losses", "Court Wins", "Contracts", "End Cash"), amount = c(2000, 3400, -1100, -100, -6600, 3800, 1400, 2800) ) vchart(balance) %>% v_waterfall(aes(x = desc, y = amount)) # With total values and formatting data.frame( x = c("Feb.4", "Feb.11", "Feb.20", "Feb.25", "Mar.4", "Mar.11", "Mar.19", "Mar.26", "Apr.1", "Apr.8", "Apr.15", "Apr.22", "Apr.29", "May.6", "total"), total = c(TRUE, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, TRUE), y = c(45L, -5L, 2L, -2L, 2L, 2L, -2L, 1L, 1L, 1L, 2L, 1L, -2L, -1L, NA) ) %>% vchart() %>% v_waterfall( aes(x = x, y = y, total = total), stackLabel = list( valueType = "absolute", formatMethod = JS("text => text + '%'") ) ) %>% v_specs_legend(visible = TRUE)
library(vchartr) balance <- data.frame( desc = c("Starting Cash", "Sales", "Refunds", "Payouts", "Court Losses", "Court Wins", "Contracts", "End Cash"), amount = c(2000, 3400, -1100, -100, -6600, 3800, 1400, 2800) ) vchart(balance) %>% v_waterfall(aes(x = desc, y = amount)) # With total values and formatting data.frame( x = c("Feb.4", "Feb.11", "Feb.20", "Feb.25", "Mar.4", "Mar.11", "Mar.19", "Mar.26", "Apr.1", "Apr.8", "Apr.15", "Apr.22", "Apr.29", "May.6", "total"), total = c(TRUE, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, TRUE), y = c(45L, -5L, 2L, -2L, 2L, 2L, -2L, 1L, 1L, 1L, 2L, 1L, -2L, -1L, NA) ) %>% vchart() %>% v_waterfall( aes(x = x, y = y, total = total), stackLabel = list( valueType = "absolute", formatMethod = JS("text => text + '%'") ) ) %>% v_specs_legend(visible = TRUE)
Create a Wordcloud
v_wordcloud( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
v_wordcloud( vc, mapping = NULL, data = NULL, name = NULL, ..., serie_id = NULL, data_id = NULL )
vc |
A chart initialized with |
mapping |
Default list of aesthetic mappings to use for chart. |
data |
Default dataset to use for chart. If not already
a |
name |
Name for the serie, only used for single serie (no |
... |
Additional parameters for the serie. |
data_id , serie_id
|
ID for the data/serie, can be used to further customize the chart with |
A vchart()
htmlwidget
object.
library(vchartr) vchart(top_cran_downloads) %>% v_wordcloud(aes(word = package, count = count)) vchart(top_cran_downloads) %>% v_wordcloud(aes(word = package, count = count, color = package)) vchart(top_cran_downloads) %>% v_wordcloud( aes(word = package, count = count, color = package), wordCloudConfig = list( zoomToFit = list( enlarge = TRUE, fontSizeLimitMax = 30 ) ) ) # Use an image to shape the wordcloud vchart(top_cran_downloads) %>% v_wordcloud( aes(word = package, count = count, color = package), maskShape = "https://jeroen.github.io/images/Rlogo.png" )
library(vchartr) vchart(top_cran_downloads) %>% v_wordcloud(aes(word = package, count = count)) vchart(top_cran_downloads) %>% v_wordcloud(aes(word = package, count = count, color = package)) vchart(top_cran_downloads) %>% v_wordcloud( aes(word = package, count = count, color = package), wordCloudConfig = list( zoomToFit = list( enlarge = TRUE, fontSizeLimitMax = 30 ) ) ) # Use an image to shape the wordcloud vchart(top_cran_downloads) %>% v_wordcloud( aes(word = package, count = count, color = package), maskShape = "https://jeroen.github.io/images/Rlogo.png" )
VChart is a charting component library, see more about it here : https://www.visactor.io/vchart.
vchart( data = NULL, mapping = NULL, ..., width = NULL, height = NULL, elementId = NULL )
vchart( data = NULL, mapping = NULL, ..., width = NULL, height = NULL, elementId = NULL )
data |
Can be a |
mapping |
Default list of aesthetic mappings to use for chart, only used if |
... |
Additional parameters. |
width |
Fixed width for widget (in css units). The default is
|
height |
Fixed height for widget (in css units). The default is
|
elementId |
Use an explicit element ID for the widget (rather than an automatically generated one). Useful if you have other JavaScript that needs to explicitly discover and interact with a specific widget instance. |
A vchart()
htmlwidget
object.
This function allow you to use JavaScript function VChart
directly,
see https://www.visactor.io/vchart/option/ for how to specify options.
library(vchartr) # Use JS syntax to construct chart vchart( type = "line", data = list( list( values = list( list(month = "January", value = 4.3), list(month = "February", value = 4.6), list(month = "March", value = 7.4), list(month = "April", value = 10.7), list(month = "May", value = 14.3), list(month = "June", value = 17.7), list(month = "July", value = 19.8), list(month = "August", value = 19.4), list(month = "September", value = 16.4), list(month = "October", value = 12.6), list(month = "November", value = 7.9), list(month = "December", value = 4.8) ) ) ), xField = "month", yField = "value", crosshair = list( xField = list(visible = TRUE) ) ) # or use R API vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_specs( crosshair = list( xField = list(visible = TRUE) ) ) # or vchart(meteo_paris, aes(month, temperature_avg)) %>% v_line() %>% v_specs( crosshair = list( xField = list(visible = TRUE) ) ) # or vchart() %>% v_line(aes(month, temperature_avg), data = meteo_paris) %>% v_specs( crosshair = list( xField = list(visible = TRUE) ) )
library(vchartr) # Use JS syntax to construct chart vchart( type = "line", data = list( list( values = list( list(month = "January", value = 4.3), list(month = "February", value = 4.6), list(month = "March", value = 7.4), list(month = "April", value = 10.7), list(month = "May", value = 14.3), list(month = "June", value = 17.7), list(month = "July", value = 19.8), list(month = "August", value = 19.4), list(month = "September", value = 16.4), list(month = "October", value = 12.6), list(month = "November", value = 7.9), list(month = "December", value = 4.8) ) ) ), xField = "month", yField = "value", crosshair = list( xField = list(visible = TRUE) ) ) # or use R API vchart(meteo_paris) %>% v_line(aes(month, temperature_avg)) %>% v_specs( crosshair = list( xField = list(visible = TRUE) ) ) # or vchart(meteo_paris, aes(month, temperature_avg)) %>% v_line() %>% v_specs( crosshair = list( xField = list(visible = TRUE) ) ) # or vchart() %>% v_line(aes(month, temperature_avg), data = meteo_paris) %>% v_specs( crosshair = list( xField = list(visible = TRUE) ) )
Output and render functions for using vchart()
within Shiny
applications and interactive Rmd documents.
vchartOutput(outputId, width = "100%", height = "400px") renderVchart(expr, env = parent.frame(), quoted = FALSE)
vchartOutput(outputId, width = "100%", height = "400px") renderVchart(expr, env = parent.frame(), quoted = FALSE)
outputId |
output variable to read from |
width , height
|
Must be a valid CSS unit (like |
expr |
An expression that generates an HTML widget (or a promise of an HTML widget). |
env |
The environment in which to evaluate |
quoted |
Is |
An output or render function that enables the use of the widget within Shiny applications.
library(shiny) library(bslib) library(vchartr) ui <- page_fluid( tags$div( style = "max-width: 900px; margin: auto;", tags$h2("vchart in shiny"), radioButtons( inputId = "data", label = "Show:", choiceNames = c("electricity mix by country", "countries generation by sources"), choiceValues = c("mix", "sources"), inline = TRUE ), conditionalPanel( condition = "input.data == 'mix'", selectInput( inputId = "country", label = "Select country:", choices = unique(electricity_mix$country) ) ), conditionalPanel( condition = "input.data == 'sources'", selectInput( inputId = "source", label = "Select source:", choices = unique(electricity_mix$source) ) ), vchartOutput(outputId = "mychart", height = "500px"), radioButtons( inputId = "type", label = "Represent as:", choices = c("bar", "pie", "treemap", "circlepacking"), inline = TRUE ), checkboxInput( inputId = "show_label", label = "Show label ?" ) ) ) server <- function(input, output, session) { output$mychart <- renderVchart({ if (input$data == "mix") { elec_data <- subset(electricity_mix, country == input$country) mapping <- aes(source, generation, fill = source) } else { elec_data <- subset(electricity_mix, source == input$source) mapping <- aes(country, generation, fill = country) } vc <- vchart(elec_data, mapping = mapping) if (input$type == "bar") { vc <- vc %>% v_bar(serie_id = "bar_serie") %>% v_specs_legend(visible = FALSE) %>% v_specs( xField = "x", label = list(visible = input$show_label), serie_id = "bar_serie" ) } else if (input$type == "pie") { vc <- vc %>% v_pie(label = list(visible = input$show_label)) } else if (input$type == "treemap") { vc <- vc %>% v_treemap(label = list(visible = input$show_label)) } else if (input$type == "circlepacking") { vc <- vc %>% v_circlepacking(label = list(style = list(visible = input$show_label))) } vc %>% v_scale_color_manual(c( "oil" = "#80549f", "coal" = "#a68832", "solar" = "#d66b0d", "gas" = "#f20809", "wind" = "#72cbb7", "hydro" = "#2672b0", "nuclear" = "#e4a701" )) }) } if (interactive()) shinyApp(ui, server)
library(shiny) library(bslib) library(vchartr) ui <- page_fluid( tags$div( style = "max-width: 900px; margin: auto;", tags$h2("vchart in shiny"), radioButtons( inputId = "data", label = "Show:", choiceNames = c("electricity mix by country", "countries generation by sources"), choiceValues = c("mix", "sources"), inline = TRUE ), conditionalPanel( condition = "input.data == 'mix'", selectInput( inputId = "country", label = "Select country:", choices = unique(electricity_mix$country) ) ), conditionalPanel( condition = "input.data == 'sources'", selectInput( inputId = "source", label = "Select source:", choices = unique(electricity_mix$source) ) ), vchartOutput(outputId = "mychart", height = "500px"), radioButtons( inputId = "type", label = "Represent as:", choices = c("bar", "pie", "treemap", "circlepacking"), inline = TRUE ), checkboxInput( inputId = "show_label", label = "Show label ?" ) ) ) server <- function(input, output, session) { output$mychart <- renderVchart({ if (input$data == "mix") { elec_data <- subset(electricity_mix, country == input$country) mapping <- aes(source, generation, fill = source) } else { elec_data <- subset(electricity_mix, source == input$source) mapping <- aes(country, generation, fill = country) } vc <- vchart(elec_data, mapping = mapping) if (input$type == "bar") { vc <- vc %>% v_bar(serie_id = "bar_serie") %>% v_specs_legend(visible = FALSE) %>% v_specs( xField = "x", label = list(visible = input$show_label), serie_id = "bar_serie" ) } else if (input$type == "pie") { vc <- vc %>% v_pie(label = list(visible = input$show_label)) } else if (input$type == "treemap") { vc <- vc %>% v_treemap(label = list(visible = input$show_label)) } else if (input$type == "circlepacking") { vc <- vc %>% v_circlepacking(label = list(style = list(visible = input$show_label))) } vc %>% v_scale_color_manual(c( "oil" = "#80549f", "coal" = "#a68832", "solar" = "#d66b0d", "gas" = "#f20809", "wind" = "#72cbb7", "hydro" = "#2672b0", "nuclear" = "#e4a701" )) }) } if (interactive()) shinyApp(ui, server)
Create a Map
vmap( data, mapping = NULL, ..., projection = NULL, width = NULL, height = NULL, elementId = NULL )
vmap( data, mapping = NULL, ..., projection = NULL, width = NULL, height = NULL, elementId = NULL )
data |
An |
mapping |
efault list of aesthetic mappings to use for map. |
... |
Configuration options for the map. |
projection |
Geographical mapping type. See online documentation for the various possible choices. |
width |
Fixed width for widget (in css units). The default is
|
height |
Fixed height for widget (in css units). The default is
|
elementId |
Use an explicit element ID for the widget (rather than an automatically generated one). Useful if you have other JavaScript that needs to explicitly discover and interact with a specific widget instance. |
A vmap()
htmlwidget
object.
if (rlang::is_installed(c("sf", "geojsonio"))) { library(vchartr) library(sf) # Create map from sf object vmap(co2_world) # Draw data on the map vmap(co2_world, aes(name = name, fill = co2_per_capita)) # Change projection and colors vmap( co2_world, aes(name = name, fill = co2_per_capita), projection = "equalEarth" ) %>% v_specs_colors( range = c( "#FFFFE5", "#FFF7BC", "#FEE391", "#FEC44F", "#FE9929", "#EC7014", "#CC4C02", "#993404", "#662506" ) ) %>% v_specs_legend( orient = "bottom", type = "color", field = "fill" ) # Map discrete data vmap( co2_world[!is.na(co2_world$co2_per_capita), ], aes( name = name, fill = ifelse(co2_per_capita >= 2.3, "Above", "Under") ) ) %>% v_specs( area = list( style = list( stroke = "#FFFFFF" ) ) ) }
if (rlang::is_installed(c("sf", "geojsonio"))) { library(vchartr) library(sf) # Create map from sf object vmap(co2_world) # Draw data on the map vmap(co2_world, aes(name = name, fill = co2_per_capita)) # Change projection and colors vmap( co2_world, aes(name = name, fill = co2_per_capita), projection = "equalEarth" ) %>% v_specs_colors( range = c( "#FFFFE5", "#FFF7BC", "#FEE391", "#FEC44F", "#FE9929", "#EC7014", "#CC4C02", "#993404", "#662506" ) ) %>% v_specs_legend( orient = "bottom", type = "color", field = "fill" ) # Map discrete data vmap( co2_world[!is.na(co2_world$co2_per_capita), ], aes( name = name, fill = ifelse(co2_per_capita >= 2.3, "Above", "Under") ) ) %>% v_specs( area = list( style = list( stroke = "#FFFFFF" ) ) ) }
This dataset represents world's electricity generation from low-carbon sources and fossil fuels over the period 2014 - 2023.
world_electricity
world_electricity
A data frame with 70 observations and 4 variables:
year
: Year
source
: Either :
Low carbon
: Electricity generation from low-carbon sources -
Low-carbon sources correspond to renewables and nuclear power, that produce significantly less greenhouse-gas emissions than fossil fuels.
Renewables
: Electricity generation from renewables
Nuclear
: Electricity generation from nuclear
Fossil
: Electricity generation from fossil fuels (oil + gas + coal)
Oil
: Electricity generation from fossil fuels
Gas
: Electricity generation from fossil fuels
Coal
: Electricity generation from fossil fuels
generation
: Electricity generation in terawatt-hours.
type
: Type of source : total or detail.