SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
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

Mais conteúdo relacionado

Mais de 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
 

Mais de 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
 

Último

Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfPatidar M
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parentsnavabharathschool99
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptxmary850239
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfVanessa Camilleri
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxlancelewisportillo
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Celine George
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Mark Reed
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptxmary850239
 
ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxVanesaIglesias10
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...JhezDiaz1
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 

Último (20)

Active Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdfActive Learning Strategies (in short ALS).pdf
Active Learning Strategies (in short ALS).pdf
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
Choosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for ParentsChoosing the Right CBSE School A Comprehensive Guide for Parents
Choosing the Right CBSE School A Comprehensive Guide for Parents
 
4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx4.16.24 21st Century Movements for Black Lives.pptx
4.16.24 21st Century Movements for Black Lives.pptx
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
ICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdfICS2208 Lecture6 Notes for SL spaces.pdf
ICS2208 Lecture6 Notes for SL spaces.pdf
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
Incoming and Outgoing Shipments in 3 STEPS Using Odoo 17
 
Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)Influencing policy (training slides from Fast Track Impact)
Influencing policy (training slides from Fast Track Impact)
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx
 
ROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptxROLES IN A STAGE PRODUCTION in arts.pptx
ROLES IN A STAGE PRODUCTION in arts.pptx
 
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
ENGLISH 7_Q4_LESSON 2_ Employing a Variety of Strategies for Effective Interp...
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.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