SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Downloaden Sie, um offline zu lesen
ggplot2:
                            A backstage tour


                            Hadley Wickham
                            Assistant Professor /
                            Dobelman Family Junior Chair
                            Department of Statistics
                            Rice University




                            February 2012
Wednesday, February 8, 12
1. Why ggplot2?
                2. Sneak peek and new features
                3. Best practices
                4. Questions




Wednesday, February 8, 12
Poll: What graphics
                          system are you
                         currently using?


Wednesday, February 8, 12
Why ggplot2?


Wednesday, February 8, 12
2004
                                          WHC
                                                  ●

                                           02H    ●

                                           02M    ●

                                           12H    ●




                          0.2




                          0.1




                          0.0
                   whc




                         −0.1




                         −0.2




                         −0.3




                                20   40               60   80
                                            day




Wednesday, February 8, 12
Wednesday, February 8, 12
“Nothing is as practical as a good theory”
              —Kurt Lewin


              “[A good model] will bring together in a
              coherent way things that previously
              appeared unrelated and which also will
              provide a basis for dealing systematically
              with new situations”
              —David Cox



Wednesday, February 8, 12
A plot is made up of multiple layers.
     A layer consists of data, a set of
     mappings between variables and
     aesthetics, a geometric object and a
     statistical transformation
     Scales control the details of the mapping.
     All components are independent and
     reusable.

Wednesday, February 8, 12
Interesting ggplot example
                            Layered grammar + ggplot2




                                               James Cheshire, http://bit.ly/xqHhAs
Wednesday, February 8, 12
Charlotte Wickham, http://cwick.co.nz/
Wednesday, February 8, 12
David B Sparks, http://bit.ly/hn54NW
Wednesday, February 8, 12
Claudia Beleites, http://bit.ly/yNqlpz
Wednesday, February 8, 12
Poll: What resources are
                most helpful to you when
                improving your R skills?


Wednesday, February 8, 12
Learning ggplot2
                    ggplot2 mailing list
                    http://groups.google.com/group/ggplot2
                    stackoverflow
                    http://stackoverflow.com/tags/ggplot2
                    Lattice to ggplot2 conversion
                    http://learnr.wordpress.com/?s=lattice
                    Cookbook for common graphics
                    http://wiki.stdout.org/rcookbook/Graphs/
                    ggplot2 book
                    http://amzn.com/0387981403



Wednesday, February 8, 12
Sneak
                             peek
Wednesday, February 8, 12
Poll: Why do you use
                     visualisation?


Wednesday, February 8, 12
# Getting started


     # To get the CRAN version
     install.packages("ggplot2")


     # To get the development version
     install.packages("devtools")
     library(devtools)
     dev_mode() # don't overwrite your existing install
     install_github("ggplot2")




Wednesday, February 8, 12
Development version




                       CRAN version

Wednesday, February 8, 12
New geoms to deal with overplotting
       45
                               ●                                       ●




       40
            (by Winston Chang)                                         ●




                               ●
                                                                       ●

       35                      ●
                                                                       ●
                               ●                                       ●
                                         ●                             ●
                               ●         ●

       30                      ●         ●
                               ●         ●                             ●
 hwy




                               ●         ●                             ●
                               ●         ●                             ●         ●
                       ●       ●         ●                             ●         ●

       25              ●       ●         ●                             ●         ●
                       ●       ●         ●         ●                   ●         ●
                       ●       ●         ●         ●                   ●         ●
                                                   ●        ●          ●         ●
                                                   ●                   ●

       20                                                   ●          ●         ●
                                                            ●                    ●
                                                            ●                    ●
                                                   ●        ●                    ●
                                                            ●                    ●

       15                                                   ●                    ●
                                                                                 ●


                                                            ●                    ●




                  2seater   compact   midsize   minivan   pickup   subcompact   suv
                                                class
Wednesday, February 8, 12
New geoms to deal with overplotting
       45
                               ●                                       ●




       40
            (by Winston Chang)                                         ●




                               ●
                                                                       ●

       35                      ●
                                                                       ●
                               ●                                       ●
                                         ●                             ●
                               ●         ●

       30                      ●         ●
                               ●         ●                             ●
 hwy




                               ●         ●                             ●
                               ●         ●                             ●         ●
                       ●       ●         ●                             ●         ●

       25              ●       ●         ●                             ●         ●
                       ●       ●         ●         ●                   ●         ●
                       ●       ●         ●         ●                   ●         ●
                                                   ●        ●          ●         ●
                                                   ●                   ●

       20                                                   ●          ●         ●
                                                            ●                    ●
                                                            ●                    ●
                                                   ●        ●                    ●
                                                            ●                    ●

       15                                                   ●                    ●
                                                                                 ●


                                                            ●                    ●




                  2seater   compact   midsize   minivan   pickup   subcompact   suv
qplot(class, hwy, data = mpg)
                            class
Wednesday, February 8, 12
45                                                                                                                     ●
                                         ●



                                                                                                                                              ●

       40


                                     ●
                                                                                                                                          ● ●
       35                                     ●   ●
                                                                                                                                      ●
                                          ●                                                                                                       ●

                                                                  ●                                                                       ●●              ●
                                              ● ●         ●       ●●
                                     ●                ●
                                                              ●
       30                                ●   ●                            ●
                                                                                                                                                            ●
                               ● ●           ●                    ●                                                                           ●●
                                ●        ●●● ●
                                           ● ●
                                             ●                    ●●●
 hwy




                               ●                                     ●                                                            ●                   ●
                                     ●                                   ●
                                                        ●
                                                        ●                 ●                                                       ●                         ●
                                                          ●●             ●●                                                                                      ●
                                   ●●
                                  ●●●       ●●            ●                                                                           ●
                                       ●     ●        ●● ● ● ●
                                                      ●       ●                                                                ●
                ● ●               ● ●                        ●●          ●
                                                                         ●                                                    ●●          ●
                                                                                                                                                      ●   ● ●
                                          ●●●             ●●             ●
                                                                                                                                                          ●              ●
       25        ●               ● ● ●    ●
                                         ● ●          ●
                                                      ●●                                                                                                          ●
                                    ●                                                                                                         ●                                    ●
                         ●           ●                                            ●       ●       ●                                                   ● ●
                               ●                                   ●                                  ●                               ●                ●                           ●
                     ●                                                            ●           ●                                                   ●
                                              ●                    ●                                                                                                                   ●
                                                                                                                                                            ●     ●
                                                                              ●   ●       ●                   ●                                       ●
                                                                                                      ●                           ●
       20                                                                                                  ● ●
                                                                                                                   ●                              ●             ●●         ●●●
                                                                                                                                                                            ●
                                                                                                                        ●                                        ● ●    ●● ●    ●
                                                                                                                  ●                                                         ● ●
                                                                                                                       ● ●                                            ●
                                                                                                          ●                                                          ●●    ●
                                                                                                                 ●                                              ●       ● ●
                                                                                                                                                                         ●      ●
                                                                                                          ● ●● ● ●
                                                                                                               ●
                                                                                                               ●       ●● ●                                         ●● ● ●● ● ● ●
                                                                                                                                                                     ●●
                                                                                                                                                                     ●        ●
                                                                                      ●                                 ●                                         ●● ● ● ●    ●
                                                                                                          ●             ●                                       ● ●
                                                                                                           ● ●           ●
                                                                                                          ● ●                                                      ●       ●●
       15                                                                                                 ●    ●                                                      ●    ●    ●

                                                                                                                                                                              ●●

                                                                                                                  ●    ●                                             ●         ●
                                                                                                                       ●




                     2seater     compact                  midsize                 minivan                         pickup      subcompact                                     suv
qplot(class, hwy, data = mpg, geom = "jitter")
                            class
Wednesday, February 8, 12
45




       40




       35




       30
 hwy




       25




       20




       15




                  2seater   compact   midsize   minivan   pickup   subcompact   suv
qplot(class, hwy, data = mpg, geom = "violin")
                            class
Wednesday, February 8, 12
45
                              ●                                       ●

                                                                      ●
       40


                             ●
                                                                     ●●
       35                   ●●
                                                                     ●
                             ●                                       ●
                                     ●                              ●●●
                           ●●●    ●●●●
       30                   ●●      ●●
                       ●●●●●●●●●●●●
                                  ●●●●●                        ●●●●●
 hwy




                             ●    ●●●●                           ●●
                         ●●●●●●● ●●●●●                           ●        ●
                    ●●   ●●●●●●●
                             ●●●●●●●●●●●●●●                  ●●●●●●●●     ●
       25            ●   ●●●●●●● ●●●●                            ●       ●●
                     ●      ●●       ●   ●●●●                   ●●●●      ●
                     ●       ●       ●     ●●                    ●        ●
                                          ●●●             ●      ●●       ●
                                           ●                     ●
       20                                               ●●●      ●    ●●●●●●●
                                                       ●●●●          ●●●●●●●●●
                                                         ●●          ●●●●●●●●
                                                  ● ●●●●●●●●●●●
                                                              ●●●●●●●●●●●●●●●●
                                                       ●●●●●             ●●
       15                                              ●●●●            ●●●●●●
                                                                         ●●
                                                        ●●●              ●●
       10
                  2seater   compact   midsize   minivan   pickup   subcompact   suv
                                                class
Wednesday, February 8, 12
45
                            ●                           ●

                                                        ●
       40


                             ●
                                                       ●●
       35                   ●●
                                                       ●
                             ●                         ●
                                     ●                ●●●
                           ●●●    ●●●●
       30                   ●●      ●●
                       ●●●●●●●●●●●●
                                  ●●●●●                ●●●●●
 hwy




                             ●    ●●●●                   ●●
                         ●●●●●●● ●●●●●                   ●        ●
                    ●●   ●●●●●●●
                             ●●●●●●●●●●●●●●          ●●●●●●●●     ●
       25            ●   ●●●●●●● ●●●●                    ●       ●●
                     ●      ●●       ●   ●●●●           ●●●●      ●
                     ●       ●       ●     ●●            ●        ●
                                          ●●●      ●     ●●       ●
                                           ●             ●
       20                                        ●●●     ●    ●●●●●●●
                                                ●●●●         ●●●●●●●●●
                                                  ●●         ●●●●●●●●
                                          ● ●●●●●●●●●●●
                                                      ●●●●●●●●●●●●●●●●
                                               ●●●●●             ●●
       15                                       ●●●●           ●●●●●●
                                                                 ●●
qplot(class, hwy, data =              mpg, geom = "dotplot", ●●
                                                 ●●●
  stackdir = "center", binaxis = "y",
  10
      2seater compact midsize minivan pickup         subcompact   suv
  stackratio = 1, binwidth = class
                                1)
Wednesday, February 8, 12
1.0
            Better legends                             ●                                                                 ●
                                                                                                                                                       ●                                                   ●




            (by Kohske Takahashi)         ●            ●
                                                                           ●                     ●                                                 ●
                                                                                                                                                       ●
                                                                                                                                                                           ●
                                                                                                                                                                                                   ●
                                                  ●
                                                                                                                                                                                       ●
                                                                                                                                                                               ●
                              ●                                                                                                                                                                        ●
     0.8                                                           ●       ●                                                          ●

                                                           ●                                                                                  ●
                                                                                                                                              ●            ●
                                                                                                                             ●
                                                                                                                                                                                                   ● ●
                                                                                                         ●                                                         ●                               ●
                                                                               ●
                                                                                                                                                                                           ●●
                                                                                                                                                                                            ●
                                                       ●
                                                                                                                                 ●●                                        ●
                                                                                                                 ●
                                                                                                                                                                       ●
                                                                                                                                                                                                                   colour
                  ●
     0.6                                               ●
                                                                                                                                                       ●                                                            ●   0.5
                                                                                                             ●
                                                               ●                        ●                                                                                              ●
                                              ●                                                                              ●
                                                                                                                                                                   ●
                                                                                                                                                                                                               ●    ●   1.0
                                                                                                                                                   ●
 y




                                                                                                                                                                                                           ●
                                  ●                                                                                                                                                                                 ●   1.5
                                  ●
                                                                                                                                                                                           ●                        ●   2.0
                                                           ● ●
                                                                                                                                  ●                                                                ●
                                                                                                     ●
     0.4                                                                                                             ●                                                                                              ●   2.5
                 ●                                     ●
                                                               ●
                          ●
                                                                                                                                          ●                                        ●
                                      ●
                      ●

                      ●                                ●
                                                                                                                                              ●
                                                      ●                        ●
     0.2                                  ●
                                              ●                                    ●                                                                                       ●
                                                   ●                                                         ●
                                                  ●                                ●
                                      ●                                                      ●                                                                                                 ●
                                                                                                                                                       ●
                  ●                                                                                  ●           ●
                                                                                                                                  ●            ●
                                                                                                                                              ●
                          ●                                    ●                                                                                               ●
                                                                                                             ●                                                                 ● ●
                                                                       ●
     0.0
                0.0                           0.2                                      0.4                               0.6                                       0.8                                     1.0
                                                                                                     x
Wednesday, February 8, 12
1.0
            Better legends                             ●                                                                 ●
                                                                                                                                                       ●                                                   ●




            (by Kohske Takahashi)         ●            ●
                                                                           ●                     ●                                                 ●
                                                                                                                                                       ●
                                                                                                                                                                           ●
                                                                                                                                                                                                   ●
                                                  ●
                                                                                                                                                                                       ●
                                                                                                                                                                               ●
                              ●                                                                                                                                                                        ●
     0.8                                                           ●       ●                                                          ●

                                                           ●                                                                                  ●
                                                                                                                                              ●            ●
                                                                                                                             ●
                                                                                                                                                                                                   ● ●
                                                                                                         ●                                                         ●                               ●
                                                                               ●
                                                                                                                                                                                           ●●
                                                                                                                                                                                            ●
                                                       ●
                                                                                                                                 ●●                                        ●
                                                                                                                 ●
                                                                                                                                                                       ●
                                                                                                                                                                                                                   colour
                  ●
     0.6                                               ●
                                                                                                                                                       ●                                                            ●   0.5
                                                                                                             ●
                                                               ●                        ●                                                                                              ●
                                              ●                                                                              ●
                                                                                                                                                                   ●
                                                                                                                                                                                                               ●    ●   1.0
                                                                                                                                                   ●
 y




                                                                                                                                                                                                           ●
                                  ●                                                                                                                                                                                 ●   1.5
                                  ●
                                                                                                                                                                                           ●                        ●   2.0
                                                           ● ●
                                                                                                                                  ●                                                                ●
                                                                                                     ●
     0.4                                                                                                             ●                                                                                              ●   2.5
                 ●                                     ●
                                                               ●
                          ●
                                                                                                                                          ●                                        ●
                                      ●
                      ●

                      ●                                ●
                                                                                                                                              ●
                                                      ●                        ●
     0.2                                  ●
                                              ●                                    ●                                                                                       ●
                                                   ●                                                         ●
                                                  ●                                ●

df <- data.frame(x = runif(100), y = runif(100))
                                      ●                                                      ●                                                                                                 ●
                                                                                                                                                       ●
                  ●                                                                                  ●           ●
                                                                                                                                               ●

df$colour <- with(df, x ^ 2 + y + runif(100))
                                                                                                                                  ●           ●
                          ●                                    ●                                                                                               ●
                                                                                                             ●                                                                 ● ●
                                                                       ●
     0.0
                0.0                           0.2                                      0.4                               0.6                                       0.8                                     1.0
qplot(x, y, data = df, colour = colour)
                           x
Wednesday, February 8, 12
1.0                                                                                                                             ●                                               ●
                                                     ●                                                       ●


                                    ●                ●
                                                                                                                                      ●
                                                                                         ●                                       ●                        ●
                                                                     ●
                                                                                                                                                                                ●
                                                ●
                                                                                                                                                                    ●
                                                                                                                                                          ●
                            ●                                                                                                                                                   ●
     0.8                                                     ●       ●                                               ●

                                                     ●                                                                       ●
                                                                                                                             ●            ●
                                                                                                                 ●
                                                                                                                                                                                ●●
                                                                                                 ●                                                ●                             ●
                                                                         ●
                                                                                                                                                                        ●●
                                                                                                                                                                         ●
                                                    ●
                                                                                                                 ●●                                   ●
                                                                                                         ●
                 ●                                                                                                                                    ●
     0.6                                             ●
                                                                                                                                      ●
                                                                                                     ●
                                                         ●                       ●                                                                                  ●                    colour
                                            ●                                                                    ●                                                                   ●
                                                                                                                                  ●
                                                                                                                                                  ●                                       ●   0.5   ●   1.0   ●   1.5
 y




                                                                                                                                                                                    ●
                                ●

                                ●
                                                                                                                                                                                          ●   2.0   ●   2.5
                                                                                                                                                                        ●
                                                         ● ●
                                                                                                                     ●                                                          ●
                                                                                             ●
     0.4                                                                                                     ●
                ●                                    ●
                                                         ●
                        ●
                                                                                                                         ●                                      ●
                                    ●
                    ●

                     ●                               ●
                                                                                                                             ●
                                                    ●                    ●
     0.2                                ●
                                            ●                                ●                                                                            ●
                                                 ●                                                   ●
                                                ●                            ●
                                    ●                                                ●                                                                                      ●
                                                                                                                                      ●
                 ●                                                                           ●           ●
                                                                                                                     ●        ●
                                                                                                                             ●
                        ●                                ●                                                                                    ●
                                                                                                     ●                                                        ● ●
                                                                 ●
     0.0
qplot(x, y, data = df, colour = colour) +
     0.0    0.2    0.4    0.6     0.8    1.0
  guides(colour = guide_legend(nrow = 2, byrow = T))
                       x
Wednesday, February 8, 12
1.0                                                                                                                                             ●                                                   ●
                                                       ●                                                               ●


                                          ●            ●
                                                                                                                                                     ●
                                                                                               ●                                                 ●                       ●
                                                                           ●
                                                                                                                                                                                                 ●
                                                  ●
                                                                                                                                                                                     ●
                                                                                                                                                                             ●
                              ●                                                                                                                                                                      ●
     0.8                                                           ●       ●                                                        ●

                                                           ●                                                                                ●
                                                                                                                                            ●            ●
                                                                                                                           ●
                                                                                                                                                                                                 ●●
                                                                                                       ●                                                         ●                               ●
                                                                               ●
                                                                                                                                                                                         ●●
                                                                                                                                                                                          ●
                                                       ●
                                                                                                                               ●●                                        ●
                                                                                                               ●
                                                                                                                                                                     ●
                                                                                                                                                                                                                 colour
     0.6
                  ●
                                                       ●                                                                                                                                                             2.5
                                                                                                           ●                                         ●
                                                                                       ●
                                                               ●                                                                                                                     ●                               2.0
                                              ●                                                                            ●                                                                                 ●
                                                                                                                                                                 ●
                                                                                                                                                 ●                                                                   1.5
 y




                                                                                                                                                                                                         ●
                                  ●

                                  ●
                                                                                                                                                                                         ●
                                                                                                                                                                                                                     1.0
                                                           ● ●
                                                                                                                                ●                                                                ●
     0.4                                                                                           ●               ●                                                                                                 0.5
                 ●                                     ●
                                                               ●
                          ●
                                                                                                                                        ●                                        ●
                                      ●
                      ●

                      ●                                ●
                                                                                                                                            ●
                                                      ●                        ●
     0.2                                  ●
                                              ●                                    ●                                                                                     ●
                                                   ●                                                       ●
                                                  ●                                ●
                                      ●                                                    ●                                                                                                 ●
                                                                                                                                                     ●
                  ●                                                                                ●           ●
                                                                                                                                ●            ●
                                                                                                                                            ●
                          ●                                    ●                                                                                             ●
                                                                                                           ●                                                                 ● ●
                                                                       ●
     0.0
qplot(x, y, data = df, 0.4
      0.0     0.2
                         colour = colour)0.8+
                                0.6                                                                                                                                                                      1.0
  guides(colour = guide_colorbar())
                             x
Wednesday, February 8, 12
qplot(x, y, data = df, colour = colour, alpha = I(1/4))
Wednesday, February 8, 12
qplot(x, y, data = df, colour = colour, alpha = I(1/4)) +
  guides(colour = guide_legend(
    override.aes = list(alpha = 1, size = 2)))
Wednesday, February 8, 12
# Better layout

     df <- data.frame(x = 1:10, y = 10:1, colour = 1:2)
     qplot(x, y, data = df) + coord_fixed()
     qplot(x, y, data = df) + facet_wrap(~ colour)

     #     Internally, there has been a big rewrite of
     #     the facetting data processing and rendering
     #     systems. This lays the foundation for new
     #     features, and fixes some annoying long-standing
     #     bugs.




Wednesday, February 8, 12
# Speed improvements

     system.time(
       print(qplot(carat, price, data = diamonds))
     )

     # Includes new tools for figuring out what's
     # taking all the time
     benchplot(qplot(carat, price, data = diamonds))

     # See also geom_raster and geom_map

     #     Still a lot of work to do. The emphasis in
     #     ggplot2 is reducing the amount of thinking
     #     time by making it easier to go from the plot in
     #     your brain to the plot on the page.

Wednesday, February 8, 12
30s with geom_tile, 8s with annotation_raster
Wednesday, February 8, 12
library(ggplot2)
     library(reshape2)
     library(RgoogleMaps)
     library(ggmap)

     theft <- subset(crime, offense == "theft" & lat > 29 & lat < 30.2 &
       lon > -95.8)

     lonr <- range(theft$lon)
     latr <- range(theft$lat)

     h_map <- GetMap.bbox(lonr, latr, size = c(1024, 1024))
     h_raster <- as.raster(h_map$myTile)

     benchplot(ggplot(theft, aes(lon, lat)) +
       annotation_raster(h_raster, lonr[1], lonr[2], latr[1], latr[2]) +
       geom_density2d(colour = "black"))

     h_data <- melt(as.matrix(h_raster))
     h_data$lat <- seq(latr[2], latr[1], length = 640)[h_data$Var1]
     h_data$lon <- seq(lonr[1], lonr[2], length = 640)[h_data$Var2]

     benchplot(ggplot(theft, aes(lon, lat)) +
       geom_tile(aes(fill = value), data = h_data) +
       scale_fill_identity() +
       geom_density2d(colour = "black"))



Wednesday, February 8, 12
ggplot2 0.9 scheduled for
                              release on March 1




Wednesday, February 8, 12
Poll: How big
                            is your data?


Wednesday, February 8, 12
# Future work: big visualisation
     # (Sponsored by Revolution Analytics)


     # How can you make a plot of 100 million
     # observations?

     # In less that one minute.




Wednesday, February 8, 12
Wednesday, February 8, 12
Wednesday, February 8, 12
Wednesday, February 8, 12
Wednesday, February 8, 12
Wednesday, February 8, 12
~100,000 points
                            0.06 s to bin
                            0.20 s to convert
                            6.0 s to plot
Wednesday, February 8, 12
~1.2 million
                            ~100,000 points
                            10 s toto bin
                            0.06 s bin
                            0.20 s to convert
                            6.0 s to plot
Wednesday, February 8, 12
Best
                            practices
Wednesday, February 8, 12
Poll: How do you learn
                      about new packages?



Wednesday, February 8, 12
Package best
                              practices
                    • Namespace
                    • Documentation
                    • Unit tests
                    • Read the source!


                    • (ggplot2 not always the best example: it was
                      was my second R package - I have now written
                      around 30. I now know a lot more!)


Wednesday, February 8, 12
Wednesday, February 8, 12
# Namespaces

     library(ggplot2)
     ddply

     # Note that plyr, reshape etc aren't automatically
     # loaded. This is good development practice -
     # it's better to be explicit than implicit.

     # Look at the NAMESPACE file.




Wednesday, February 8, 12
export("%+%")
     export(aes_all)
     export(aes_auto)
     export(aes_string)
     export(aes)
     export(annotate)
     export(annotation_custom)
     export(annotation_map)
     export(annotation_raster)
     export(autoplot)
     export(benchplot)
     export(borders)
     export(continuous_scale)
     export(coord_cartesian)
     export(coord_equal)
     export(coord_fixed)
     export(coord_flip)
     export(coord_map)
     export(coord_polar)
     ...

Wednesday, February 8, 12
# Unit tests

     # Look in tests/ or inst/tests/

     library(testthat)
     test_package("ggplot2")




Wednesday, February 8, 12
# Documentation

     # Function level in man/
     ?geom_point
     ?facet_wrap
     package?ggplot2

     # Vignettes in inst/doc
     # (ggplot2 doesn't have any)

     # Publications
     citation("ggplot2")




Wednesday, February 8, 12
Questions

Wednesday, February 8, 12
Learning ggplot2
                    ggplot2 mailing list
                    http://groups.google.com/group/ggplot2
                    stackoverflow
                    http://stackoverflow.com/tags/ggplot2
                    Lattice to ggplot2 conversion
                    http://learnr.wordpress.com/?s=lattice
                    Cookbook for common graphics
                    http://wiki.stdout.org/rcookbook/Graphs/
                    ggplot2 book
                    http://amzn.com/0387981403



Wednesday, February 8, 12

Weitere ähnliche Inhalte

Mehr von Revolution Analytics

Speeding up R with Parallel Programming in the Cloud
Speeding up R with Parallel Programming in the CloudSpeeding up R with Parallel Programming in the Cloud
Speeding up R with Parallel Programming in the CloudRevolution Analytics
 
Migrating Existing Open Source Machine Learning to Azure
Migrating Existing Open Source Machine Learning to AzureMigrating Existing Open Source Machine Learning to Azure
Migrating Existing Open Source Machine Learning to AzureRevolution Analytics
 
Speed up R with parallel programming in the Cloud
Speed up R with parallel programming in the CloudSpeed up R with parallel programming in the Cloud
Speed up R with parallel programming in the CloudRevolution Analytics
 
Predicting Loan Delinquency at One Million Transactions per Second
Predicting Loan Delinquency at One Million Transactions per SecondPredicting Loan Delinquency at One Million Transactions per Second
Predicting Loan Delinquency at One Million Transactions per SecondRevolution Analytics
 
The Value of Open Source Communities
The Value of Open Source CommunitiesThe Value of Open Source Communities
The Value of Open Source CommunitiesRevolution Analytics
 
Building a scalable data science platform with R
Building a scalable data science platform with RBuilding a scalable data science platform with R
Building a scalable data science platform with RRevolution Analytics
 
The Business Economics and Opportunity of Open Source Data Science
The Business Economics and Opportunity of Open Source Data ScienceThe Business Economics and Opportunity of Open Source Data Science
The Business Economics and Opportunity of Open Source Data ScienceRevolution Analytics
 
Taking R Analytics to SQL and the Cloud
Taking R Analytics to SQL and the CloudTaking R Analytics to SQL and the Cloud
Taking R Analytics to SQL and the CloudRevolution Analytics
 
The Network structure of R packages on CRAN & BioConductor
The Network structure of R packages on CRAN & BioConductorThe Network structure of R packages on CRAN & BioConductor
The Network structure of R packages on CRAN & BioConductorRevolution Analytics
 
The network structure of cran 2015 07-02 final
The network structure of cran 2015 07-02 finalThe network structure of cran 2015 07-02 final
The network structure of cran 2015 07-02 finalRevolution Analytics
 
Simple Reproducibility with the checkpoint package
Simple Reproducibilitywith the checkpoint packageSimple Reproducibilitywith the checkpoint package
Simple Reproducibility with the checkpoint packageRevolution Analytics
 

Mehr von Revolution Analytics (20)

Speeding up R with Parallel Programming in the Cloud
Speeding up R with Parallel Programming in the CloudSpeeding up R with Parallel Programming in the Cloud
Speeding up R with Parallel Programming in the Cloud
 
Migrating Existing Open Source Machine Learning to Azure
Migrating Existing Open Source Machine Learning to AzureMigrating Existing Open Source Machine Learning to Azure
Migrating Existing Open Source Machine Learning to Azure
 
R in Minecraft
R in Minecraft R in Minecraft
R in Minecraft
 
The case for R for AI developers
The case for R for AI developersThe case for R for AI developers
The case for R for AI developers
 
Speed up R with parallel programming in the Cloud
Speed up R with parallel programming in the CloudSpeed up R with parallel programming in the Cloud
Speed up R with parallel programming in the Cloud
 
The R Ecosystem
The R EcosystemThe R Ecosystem
The R Ecosystem
 
R Then and Now
R Then and NowR Then and Now
R Then and Now
 
Predicting Loan Delinquency at One Million Transactions per Second
Predicting Loan Delinquency at One Million Transactions per SecondPredicting Loan Delinquency at One Million Transactions per Second
Predicting Loan Delinquency at One Million Transactions per Second
 
Reproducible Data Science with R
Reproducible Data Science with RReproducible Data Science with R
Reproducible Data Science with R
 
The Value of Open Source Communities
The Value of Open Source CommunitiesThe Value of Open Source Communities
The Value of Open Source Communities
 
The R Ecosystem
The R EcosystemThe R Ecosystem
The R Ecosystem
 
R at Microsoft (useR! 2016)
R at Microsoft (useR! 2016)R at Microsoft (useR! 2016)
R at Microsoft (useR! 2016)
 
Building a scalable data science platform with R
Building a scalable data science platform with RBuilding a scalable data science platform with R
Building a scalable data science platform with R
 
R at Microsoft
R at MicrosoftR at Microsoft
R at Microsoft
 
The Business Economics and Opportunity of Open Source Data Science
The Business Economics and Opportunity of Open Source Data ScienceThe Business Economics and Opportunity of Open Source Data Science
The Business Economics and Opportunity of Open Source Data Science
 
Taking R Analytics to SQL and the Cloud
Taking R Analytics to SQL and the CloudTaking R Analytics to SQL and the Cloud
Taking R Analytics to SQL and the Cloud
 
The Network structure of R packages on CRAN & BioConductor
The Network structure of R packages on CRAN & BioConductorThe Network structure of R packages on CRAN & BioConductor
The Network structure of R packages on CRAN & BioConductor
 
The network structure of cran 2015 07-02 final
The network structure of cran 2015 07-02 finalThe network structure of cran 2015 07-02 final
The network structure of cran 2015 07-02 final
 
Simple Reproducibility with the checkpoint package
Simple Reproducibilitywith the checkpoint packageSimple Reproducibilitywith the checkpoint package
Simple Reproducibility with the checkpoint package
 
R at Microsoft
R at MicrosoftR at Microsoft
R at Microsoft
 

Kürzlich hochgeladen

“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxGaneshChakor2
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppCeline George
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104misteraugie
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 

Kürzlich hochgeladen (20)

“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdfTataKelola dan KamSiber Kecerdasan Buatan v022.pdf
TataKelola dan KamSiber Kecerdasan Buatan v022.pdf
 
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
 
CARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptxCARE OF CHILD IN INCUBATOR..........pptx
CARE OF CHILD IN INCUBATOR..........pptx
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
URLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website AppURLs and Routing in the Odoo 17 Website App
URLs and Routing in the Odoo 17 Website App
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104Nutritional Needs Presentation - HLTH 104
Nutritional Needs Presentation - HLTH 104
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 

A Backstage Tour of ggplot2 with Hadley Wickham

  • 1. ggplot2: A backstage tour Hadley Wickham Assistant Professor / Dobelman Family Junior Chair Department of Statistics Rice University February 2012 Wednesday, February 8, 12
  • 2. 1. Why ggplot2? 2. Sneak peek and new features 3. Best practices 4. Questions Wednesday, February 8, 12
  • 3. Poll: What graphics system are you currently using? Wednesday, February 8, 12
  • 5. 2004 WHC ● 02H ● 02M ● 12H ● 0.2 0.1 0.0 whc −0.1 −0.2 −0.3 20 40 60 80 day Wednesday, February 8, 12
  • 7. “Nothing is as practical as a good theory” —Kurt Lewin “[A good model] will bring together in a coherent way things that previously appeared unrelated and which also will provide a basis for dealing systematically with new situations” —David Cox Wednesday, February 8, 12
  • 8. A plot is made up of multiple layers. A layer consists of data, a set of mappings between variables and aesthetics, a geometric object and a statistical transformation Scales control the details of the mapping. All components are independent and reusable. Wednesday, February 8, 12
  • 9. Interesting ggplot example Layered grammar + ggplot2 James Cheshire, http://bit.ly/xqHhAs Wednesday, February 8, 12
  • 11. David B Sparks, http://bit.ly/hn54NW Wednesday, February 8, 12
  • 13. Poll: What resources are most helpful to you when improving your R skills? Wednesday, February 8, 12
  • 14. Learning ggplot2 ggplot2 mailing list http://groups.google.com/group/ggplot2 stackoverflow http://stackoverflow.com/tags/ggplot2 Lattice to ggplot2 conversion http://learnr.wordpress.com/?s=lattice Cookbook for common graphics http://wiki.stdout.org/rcookbook/Graphs/ ggplot2 book http://amzn.com/0387981403 Wednesday, February 8, 12
  • 15. Sneak peek Wednesday, February 8, 12
  • 16. Poll: Why do you use visualisation? Wednesday, February 8, 12
  • 17. # Getting started # To get the CRAN version install.packages("ggplot2") # To get the development version install.packages("devtools") library(devtools) dev_mode() # don't overwrite your existing install install_github("ggplot2") Wednesday, February 8, 12
  • 18. Development version CRAN version Wednesday, February 8, 12
  • 19. New geoms to deal with overplotting 45 ● ● 40 (by Winston Chang) ● ● ● 35 ● ● ● ● ● ● ● ● 30 ● ● ● ● ● hwy ● ● ● ● ● ● ● ● ● ● ● ● 25 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 20 ● ● ● ● ● ● ● ● ● ● ● ● 15 ● ● ● ● ● 2seater compact midsize minivan pickup subcompact suv class Wednesday, February 8, 12
  • 20. New geoms to deal with overplotting 45 ● ● 40 (by Winston Chang) ● ● ● 35 ● ● ● ● ● ● ● ● 30 ● ● ● ● ● hwy ● ● ● ● ● ● ● ● ● ● ● ● 25 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 20 ● ● ● ● ● ● ● ● ● ● ● ● 15 ● ● ● ● ● 2seater compact midsize minivan pickup subcompact suv qplot(class, hwy, data = mpg) class Wednesday, February 8, 12
  • 21. 45 ● ● ● 40 ● ● ● 35 ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ● 30 ● ● ● ● ● ● ● ● ●● ● ●●● ● ● ● ● ●●● hwy ● ● ● ● ● ● ● ● ● ● ● ●● ●● ● ●● ●●● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● ● ●●● ●● ● ● ● 25 ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 20 ● ● ● ● ●● ●●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ●● ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ●● ● ●● ● ● ● ●● ● ● ● ● ●● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● 15 ● ● ● ● ● ●● ● ● ● ● ● 2seater compact midsize minivan pickup subcompact suv qplot(class, hwy, data = mpg, geom = "jitter") class Wednesday, February 8, 12
  • 22. 45 40 35 30 hwy 25 20 15 2seater compact midsize minivan pickup subcompact suv qplot(class, hwy, data = mpg, geom = "violin") class Wednesday, February 8, 12
  • 23. 45 ● ● ● 40 ● ●● 35 ●● ● ● ● ● ●●● ●●● ●●●● 30 ●● ●● ●●●●●●●●●●●● ●●●●● ●●●●● hwy ● ●●●● ●● ●●●●●●● ●●●●● ● ● ●● ●●●●●●● ●●●●●●●●●●●●●● ●●●●●●●● ● 25 ● ●●●●●●● ●●●● ● ●● ● ●● ● ●●●● ●●●● ● ● ● ● ●● ● ● ●●● ● ●● ● ● ● 20 ●●● ● ●●●●●●● ●●●● ●●●●●●●●● ●● ●●●●●●●● ● ●●●●●●●●●●● ●●●●●●●●●●●●●●●● ●●●●● ●● 15 ●●●● ●●●●●● ●● ●●● ●● 10 2seater compact midsize minivan pickup subcompact suv class Wednesday, February 8, 12
  • 24. 45 ● ● ● 40 ● ●● 35 ●● ● ● ● ● ●●● ●●● ●●●● 30 ●● ●● ●●●●●●●●●●●● ●●●●● ●●●●● hwy ● ●●●● ●● ●●●●●●● ●●●●● ● ● ●● ●●●●●●● ●●●●●●●●●●●●●● ●●●●●●●● ● 25 ● ●●●●●●● ●●●● ● ●● ● ●● ● ●●●● ●●●● ● ● ● ● ●● ● ● ●●● ● ●● ● ● ● 20 ●●● ● ●●●●●●● ●●●● ●●●●●●●●● ●● ●●●●●●●● ● ●●●●●●●●●●● ●●●●●●●●●●●●●●●● ●●●●● ●● 15 ●●●● ●●●●●● ●● qplot(class, hwy, data = mpg, geom = "dotplot", ●● ●●● stackdir = "center", binaxis = "y", 10 2seater compact midsize minivan pickup subcompact suv stackratio = 1, binwidth = class 1) Wednesday, February 8, 12
  • 25. 1.0 Better legends ● ● ● ● (by Kohske Takahashi) ● ● ● ● ● ● ● ● ● ● ● ● ● 0.8 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● colour ● 0.6 ● ● ● 0.5 ● ● ● ● ● ● ● ● ● 1.0 ● y ● ● ● 1.5 ● ● ● 2.0 ● ● ● ● ● 0.4 ● ● 2.5 ● ● ● ● ● ● ● ● ● ● ● ● ● 0.2 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0.0 0.0 0.2 0.4 0.6 0.8 1.0 x Wednesday, February 8, 12
  • 26. 1.0 Better legends ● ● ● ● (by Kohske Takahashi) ● ● ● ● ● ● ● ● ● ● ● ● ● 0.8 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●● ● ● ●● ● ● ● colour ● 0.6 ● ● ● 0.5 ● ● ● ● ● ● ● ● ● 1.0 ● y ● ● ● 1.5 ● ● ● 2.0 ● ● ● ● ● 0.4 ● ● 2.5 ● ● ● ● ● ● ● ● ● ● ● ● ● 0.2 ● ● ● ● ● ● ● ● df <- data.frame(x = runif(100), y = runif(100)) ● ● ● ● ● ● ● ● df$colour <- with(df, x ^ 2 + y + runif(100)) ● ● ● ● ● ● ● ● ● 0.0 0.0 0.2 0.4 0.6 0.8 1.0 qplot(x, y, data = df, colour = colour) x Wednesday, February 8, 12
  • 27. 1.0 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0.8 ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● ● 0.6 ● ● ● ● ● ● colour ● ● ● ● ● ● 0.5 ● 1.0 ● 1.5 y ● ● ● ● 2.0 ● 2.5 ● ● ● ● ● ● 0.4 ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0.2 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0.0 qplot(x, y, data = df, colour = colour) + 0.0 0.2 0.4 0.6 0.8 1.0 guides(colour = guide_legend(nrow = 2, byrow = T)) x Wednesday, February 8, 12
  • 28. 1.0 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0.8 ● ● ● ● ● ● ● ● ●● ● ● ● ● ●● ● ● ●● ● ● ● colour 0.6 ● ● 2.5 ● ● ● ● ● 2.0 ● ● ● ● ● 1.5 y ● ● ● ● 1.0 ● ● ● ● 0.4 ● ● 0.5 ● ● ● ● ● ● ● ● ● ● ● ● ● 0.2 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 0.0 qplot(x, y, data = df, 0.4 0.0 0.2 colour = colour)0.8+ 0.6 1.0 guides(colour = guide_colorbar()) x Wednesday, February 8, 12
  • 29. qplot(x, y, data = df, colour = colour, alpha = I(1/4)) Wednesday, February 8, 12
  • 30. qplot(x, y, data = df, colour = colour, alpha = I(1/4)) + guides(colour = guide_legend( override.aes = list(alpha = 1, size = 2))) Wednesday, February 8, 12
  • 31. # Better layout df <- data.frame(x = 1:10, y = 10:1, colour = 1:2) qplot(x, y, data = df) + coord_fixed() qplot(x, y, data = df) + facet_wrap(~ colour) # Internally, there has been a big rewrite of # the facetting data processing and rendering # systems. This lays the foundation for new # features, and fixes some annoying long-standing # bugs. Wednesday, February 8, 12
  • 32. # Speed improvements system.time( print(qplot(carat, price, data = diamonds)) ) # Includes new tools for figuring out what's # taking all the time benchplot(qplot(carat, price, data = diamonds)) # See also geom_raster and geom_map # Still a lot of work to do. The emphasis in # ggplot2 is reducing the amount of thinking # time by making it easier to go from the plot in # your brain to the plot on the page. Wednesday, February 8, 12
  • 33. 30s with geom_tile, 8s with annotation_raster Wednesday, February 8, 12
  • 34. library(ggplot2) library(reshape2) library(RgoogleMaps) library(ggmap) theft <- subset(crime, offense == "theft" & lat > 29 & lat < 30.2 & lon > -95.8) lonr <- range(theft$lon) latr <- range(theft$lat) h_map <- GetMap.bbox(lonr, latr, size = c(1024, 1024)) h_raster <- as.raster(h_map$myTile) benchplot(ggplot(theft, aes(lon, lat)) + annotation_raster(h_raster, lonr[1], lonr[2], latr[1], latr[2]) + geom_density2d(colour = "black")) h_data <- melt(as.matrix(h_raster)) h_data$lat <- seq(latr[2], latr[1], length = 640)[h_data$Var1] h_data$lon <- seq(lonr[1], lonr[2], length = 640)[h_data$Var2] benchplot(ggplot(theft, aes(lon, lat)) + geom_tile(aes(fill = value), data = h_data) + scale_fill_identity() + geom_density2d(colour = "black")) Wednesday, February 8, 12
  • 35. ggplot2 0.9 scheduled for release on March 1 Wednesday, February 8, 12
  • 36. Poll: How big is your data? Wednesday, February 8, 12
  • 37. # Future work: big visualisation # (Sponsored by Revolution Analytics) # How can you make a plot of 100 million # observations? # In less that one minute. Wednesday, February 8, 12
  • 43. ~100,000 points 0.06 s to bin 0.20 s to convert 6.0 s to plot Wednesday, February 8, 12
  • 44. ~1.2 million ~100,000 points 10 s toto bin 0.06 s bin 0.20 s to convert 6.0 s to plot Wednesday, February 8, 12
  • 45. Best practices Wednesday, February 8, 12
  • 46. Poll: How do you learn about new packages? Wednesday, February 8, 12
  • 47. Package best practices • Namespace • Documentation • Unit tests • Read the source! • (ggplot2 not always the best example: it was was my second R package - I have now written around 30. I now know a lot more!) Wednesday, February 8, 12
  • 49. # Namespaces library(ggplot2) ddply # Note that plyr, reshape etc aren't automatically # loaded. This is good development practice - # it's better to be explicit than implicit. # Look at the NAMESPACE file. Wednesday, February 8, 12
  • 50. export("%+%") export(aes_all) export(aes_auto) export(aes_string) export(aes) export(annotate) export(annotation_custom) export(annotation_map) export(annotation_raster) export(autoplot) export(benchplot) export(borders) export(continuous_scale) export(coord_cartesian) export(coord_equal) export(coord_fixed) export(coord_flip) export(coord_map) export(coord_polar) ... Wednesday, February 8, 12
  • 51. # Unit tests # Look in tests/ or inst/tests/ library(testthat) test_package("ggplot2") Wednesday, February 8, 12
  • 52. # Documentation # Function level in man/ ?geom_point ?facet_wrap package?ggplot2 # Vignettes in inst/doc # (ggplot2 doesn't have any) # Publications citation("ggplot2") Wednesday, February 8, 12
  • 54. Learning ggplot2 ggplot2 mailing list http://groups.google.com/group/ggplot2 stackoverflow http://stackoverflow.com/tags/ggplot2 Lattice to ggplot2 conversion http://learnr.wordpress.com/?s=lattice Cookbook for common graphics http://wiki.stdout.org/rcookbook/Graphs/ ggplot2 book http://amzn.com/0387981403 Wednesday, February 8, 12