# Introduction to ggconf

#### Yasutaka Tanaka

#### 2018-04-08

(This vignette is still in a draft).

ggplot2 provides a comprehensive collection of functions to draw a variety of informative plots.

    ggplot(mtcars) +
      geom_point(aes(x=hp, y=wt, colour=factor(cyl)))

However, when finalizing plots for presentation (e.g. rotating labels, changing font sizes, or changing font families), ggplot2 needs long specifications of those appearance elements:

    ggplot(mtcars) +
      geom_point(aes(x=hp, y=wt, colour=factor(cyl)) +
      labs(title = "Motor Cars Road Test") +
      theme(plot.title = element_text(face = "bold"),
            axis.text = element_text(face = "bold", size = 18),
            axis.title.y = element_text(angle = 0),
            plot.background = element_rect(fill="white"))

ggconf provides shorter and more flexible interface for modifying appearance elements:

    ggplot(mtcars) +
      geom_point(aes(x=hp, y=wt, colour=factor(cyl)) +
      labs(title = "Motor Cars Road Test") +
      theme(plot.title(face = "bold"), axis.text(face = "bold", size = 18),
            axis.title.y(angle = 0), plot.bg(fill="white"))

Some people likes to write everything in a line. ggconf provides such a flexibility through ambiguous match capability:

    ggplot(mtcars) +
      geom_point(aes(x=hp, y=wt, colour=factor(cyl)) +
      labs(title = "Motor Cars Road Test") +
      theme(plt.ttl(f="bold"), a.txt(f="bold", z=18), a.ttl.y(angl=0), plt.bg(fl="white"))

## Why does the above command work?

One interesting thing about ggconf is the above functions are not actually functions:

    # plot.title() is not defined

    plot.title
    Error: no such object 'plot.title'

The `plot.title()` function used above is undefined in R global environment. In fact, the above call are not a function, but just a sequence of symbols for compiling into a corresponding ggplot2 call.

## Debug Mode

If you define `ggconf_debug`, you could see verbose debugging message when calling theme2().