Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

ms_barchart

barchart object


Description

Creation of a barchart object that can be inserted in a 'Microsoft' document.

Bar charts illustrate comparisons among individual items. In a bar chart, the categories are typically organized along the vertical axis, and the values along the horizontal axis.

Consider using a bar chart when:

  • The axis labels are long.

  • The values that are shown are durations.

Usage

ms_barchart(data, x, y, group = NULL, labels = NULL)

Arguments

data

a data.frame

x

x colname

y

y colname

group

grouping colname used to split data into series. Optional.

labels

colnames of columns to be used as labels into series. Optional. If more than a name, only the first one will be used as label, but all labels (transposed if a group is used) will be available in the Excel file associated with the chart.

Illustrations

See Also

Other 'Office' chart objects: ms_areachart(), ms_linechart(), ms_scatterchart()

Examples

library(officer)
library(mschart)
library(officer)


# example chart 01 -------

chart_01 <- ms_barchart(
  data = browser_data, x = "browser",
  y = "value", group = "serie"
)
chart_01 <- chart_settings(
  x = chart_01, dir = "vertical",
  grouping = "clustered", gap_width = 50
)
chart_01 <- chart_ax_x(
  x = chart_01, cross_between = "between",
  major_tick_mark = "out"
)
chart_01 <- chart_ax_y(
  x = chart_01, cross_between = "midCat",
  major_tick_mark = "in"
)


# example chart 02 -------
dat <- data.frame(
  Species = factor(c("setosa", "versicolor", "virginica"),
                   levels = c("setosa", "versicolor", "virginica")),
  mean = c(5.006, 5.936, 6.588)
)
chart_02 <- ms_barchart(data = dat, x = "Species", y = "mean")
chart_02 <- chart_settings(x = chart_02, dir = "horizontal")
chart_02 <- chart_theme(x = chart_02, title_x_rot = 270, title_y_rot = 0)



# example chart 03 -------

mytheme <- mschart_theme(
  axis_title_x = fp_text(color = "gray", font.size = 20, bold = TRUE),
  axis_title_y = fp_text(color = "gray", font.size = 20, italic = TRUE),
  grid_major_line_y = fp_border(width = 1, color = "wheat"),
  axis_ticks_y = fp_border(width = 1, color = "gray")
)

chart_03 <- ms_barchart(
  data = browser_data, x = "browser",
  y = "value", group = "serie"
)
chart_03 <- chart_settings(chart_03,
  grouping = "stacked",
  gap_width = 150, overlap = 100
)
chart_03 <- chart_ax_x(chart_03,
  cross_between = "between",
  major_tick_mark = "out", minor_tick_mark = "none"
)
chart_03 <- chart_ax_y(chart_03,
  num_fmt = "0.00",
  minor_tick_mark = "none"
)
chart_03 <- set_theme(chart_03, mytheme)
chart_03 <- chart_labels(x = chart_03, title = "Things in percent")
chart_03 <- chart_data_labels(chart_03,
  position = "ctr",
  show_val = TRUE
)
chart_03 <- chart_labels_text(chart_03, fp_text(color = "white", bold = TRUE, font.size = 9))


# example chart 04 -------

dat_groups <-
  data.frame(
    cut = c("Fair","Fair","Fair","Fair","Fair",
            "Fair","Fair","Fair","Good","Good","Good","Good","Good",
            "Good","Good","Good","Very Good","Very Good","Very Good",
            "Very Good","Very Good","Very Good","Very Good","Very Good",
            "Premium","Premium","Premium","Premium","Premium",
            "Premium","Premium","Premium","Ideal","Ideal","Ideal","Ideal",
            "Ideal","Ideal","Ideal","Ideal"),
    clarity = c("I1","SI2","SI1","VS2","VS1","VVS2",
                "VVS1","IF","I1","SI2","SI1","VS2","VS1","VVS2","VVS1",
                "IF","I1","SI2","SI1","VS2","VS1","VVS2","VVS1","IF",
                "I1","SI2","SI1","VS2","VS1","VVS2","VVS1","IF","I1",
                "SI2","SI1","VS2","VS1","VVS2","VVS1","IF"),
    carat = c(1.065,1.01,0.98,0.9,0.77,0.7,0.7,
              0.47,1.07,1,0.79,0.82,0.7,0.505,0.4,0.46,1.145,1.01,
              0.77,0.71,0.7,0.4,0.36,0.495,1.11,1.04,0.9,0.72,0.7,
              0.455,0.4,0.36,1.13,1,0.71,0.53,0.53,0.44,0.4,0.34),
    n = c(210L,466L,408L,261L,170L,69L,17L,9L,
          96L,1081L,1560L,978L,648L,286L,186L,71L,84L,2100L,
          3240L,2591L,1775L,1235L,789L,268L,205L,2949L,3575L,3357L,
          1989L,870L,616L,230L,146L,2598L,4282L,5071L,3589L,
          2606L,2047L,1212L)
  )

dat_groups$label <- sprintf(
  "carat median is %.01f",
  dat_groups$carat
)
dat_groups

text_prop <- fp_text(font.size = 11, color = "gray")

chrt <- ms_barchart(
  data = dat_groups, x = "cut",
  labels = "label", y = "n", group = "clarity"
)
chrt <- chart_settings(chrt,
  grouping = "clustered", dir = "horizontal",
  gap_width = 0
)
chrt <- chart_data_labels(chrt, position = "outEnd")
chrt <- chart_labels_text(chrt, text_prop)
chrt <- chart_theme(chrt, title_x_rot = 270, title_y_rot = 0)

# example chart 05 -------

dat_no_group <- data.frame(
  stringsAsFactors = FALSE,
  cut = c("Fair", "Good", "Very Good", "Premium", "Ideal"),
  carat = c(1, 0.82, 0.71, 0.86, 0.54),
  n = c(1610L, 4906L, 12082L, 13791L, 21551L),
  label = c("carat median is 1.0",
            "carat median is 0.8","carat median is 0.7",
            "carat median is 0.9","carat median is 0.5")
)
chrt <- ms_barchart(
  data = dat_no_group,
  x = "cut", labels = "label", y = "n"
)
chrt <- chart_settings(chrt,
  grouping = "clustered")
chrt <- chart_data_labels(chrt, position = "outEnd")
chrt <- chart_labels_text(chrt, text_prop)

mschart

Chart Generation for 'Microsoft Word' and 'Microsoft PowerPoint' Documents

v0.3.0
MIT + file LICENSE
Authors
David Gohel [aut, cre], ArData [cph], YouGov [fnd], Rokas Klydzia [ctb] (custom labels), David Camposeco [ctb] (chart_data_smooth function), Dan Joplin [ctb] (fix scatter plot data structure)
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.