Highcharts have a rich API which allows you to have control of the entire chart, from title, subtitle to axis ticks, labels, annotations. We’ll review the main functions with simple examples.

## Before to start

If this is clear, we can continue.

Now, let’s create a simple chart:

library(highcharter)

data("citytemp")

hc <- highchart() %>%
hc_xAxis(categories = citytemp$month) %>% hc_add_series( name = "Tokyo", data = citytemp$tokyo
) %>%
name = "London", data = citytemp$london ) %>% hc_add_series( name = "Other city", data = (citytemp$tokyo + citytemp\$london)/2
)

hc


## Chart

With hc_chart you can define general chart options.

hc %>%
hc_chart(
borderColor = '#EBBA95',
borderWidth = 2,
backgroundColor = list(
linearGradient = c(0, 0, 500, 500),
stops = list(
list(0, 'rgb(255, 255, 255)'),
list(1, 'rgb(200, 200, 255)')
)
)
)


Now change type to column and add 3d effect.

hc <- hc %>%
hc_chart(
type = "column",
options3d = list(
enabled = TRUE,
beta = 15,
alpha = 15
)
)
hc

# back to the line!
hc <- hc_chart(hc, type = "line", options3d = list(enabled = FALSE))


## Title, subtitle, caption and credits

A good chart always have at least title, right? Then you can do it better adding relevant information using a subtitle or caption, even link to the source of data:

hc %>%
hc_title(
text = "This is the title of the chart"
) %>%
hc_subtitle(
text = "This is an intereseting subtitle to give
context for the chart or some interesting fact"e
context for the chart or some interesting fact"
) %>%
hc_caption(
text = "This is a long text to give some
subtle details of the data which can be relevant to the reader.
This is usually a long text that's why I'm trying to put a
<i>loooooong</i> text."text to give some
subtle details of the data which can be relevant to the reader.
This is usually a long text that's why I'm trying to put a
loooooong text.",
useHTML = TRUE
) %>%
hc_credits(
text = "Chart created using R and highcharter",
href = "http://jkunst.com/highcharter",
enabled = TRUE
)


## Axis

Usually is desirable get control or modify the behavior of the axis:

hc %>%
hc_xAxis(
title = list(text = "Month in x Axis"),
opposite = TRUE
) %>%
hc_yAxis(
title = list(text = "Temperature <b>in y Axis</b>", useHTML = TRUE),
opposite = TRUE,
minorTickInterval = "auto",
minorGridLineDashStyle = "LongDashDotDot",
showFirstLabel = FALSE,
showLastLabel = FALSE
)


A good feature is plotLines and plotBand which you can use in both axis. For example:

hc %>%
hc_xAxis(
plotLines = list(
list(
label = list(text = "This is a plotLine"),
color = "#FF0000",
width = 2,
value = 4,
# the zIndex is used to put the label text over the grid lines
zIndex = 1
)
)
) %>%
hc_yAxis(
plotBands = list(
list(
from = 20,
to = 50,
color = hex_to_rgba("red", 0.1),
label = list(text = "This is a plotBand"),
# the zIndex is used to put the label text over the grid lines
zIndex = 1
)
)
)


## Legend & tooltip

hc %>%
hc_legend(
align = "left",
verticalAlign = "top",
layout = "vertical",
x = 0, y = 100
) %>%
hc_tooltip(
crosshairs = TRUE,
backgroundColor = "#F0F0F0",
shared = TRUE,
borderWidth = 5
)