Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

🍋 Lemon --- Freshing up your ggplots

License

NotificationsYou must be signed in to change notification settings

stefanedwards/lemon

Repository files navigation

CRAN_Status_Badgedownloads

Just anotherggplot2 andknitr extension package.

This package contains functions primarily in these domains of ggplot2:

  • Axis lines miniature Axis lines.
  • Facets miniature Repeated axis lines on facets.
  • geom_pointlinegeom_pointpath andgeom_pointline.
  • Legends

As well as some functions in knitr.

Installation

# install.packages("devtools")# Install release from GitHub:devtools::install_github("stefanedwards/lemon",ref='v0.3.1')# Or get the lastest development version from GitHub:devtools::install_github("stefanedwards/lemon")

Axis lines

We can display a limit on the axes range.

library(lemon)ggplot(mtcars, aes(x=cyl,y=mpg))+   geom_point()+   coord_capped_cart(bottom='both',left='none')+  theme_light()+ theme(panel.border=element_blank(),axis.line= element_line())

NB: Disablepanel.border and enableaxis.line intheme, otherwise you will not see an effect!

We could also show that the x-axis is categorical (or ordinal):

(p<- ggplot(mtcars, aes(x=as.factor(cyl),y=mpg))+   geom_point(position=position_jitter(width=0.1))+   coord_flex_cart(bottom=brackets_horisontal(),left=capped_vertical('both'))+  theme_light()+ theme(panel.border=element_blank(),axis.line= element_line()))

When capping the axis lines, they are never capped further inwards than the ticks! Look up

  • coord_capped_cart,coord_capped_flip
  • coord_flex_cart,coord_flex_flip,coord_flex_fixed
  • brackets_horisontal,brackets_vertical
  • capped_horisontal,capped_vertical

Facets

Having produced such wonderous axes, it is a pity they are not plotted around all panels when using faceting. We have extended bothfacet_grid andfacet_wrap to produce axis, ticks, and labels onall panels:

p+ facet_rep_wrap(~gear,ncol=2,label=label_both)

They work just like the normal ones; look upfacet_rep_grid andfacet_rep_wrap.

geom_pointline

A geom that combines both points and lines. While possible by using bothgeom_point andgeom_line, position adjustments are not preserved between the two layers.geom_pointline andgeom_pointpath combinesgeom_point withgeom_line andgeom_path, respectively, while preserving position adjustments.

Left:geom_point andgeom_line as two separate geoms. Right: The two geoms combined intogeom_pointline. Both produced withggplot(mtcars, aes(wt, mpg, colour=factor(cyl))) + geom_point(col='grey'), where the grey points indicate the true location of the datapoint.

An added visual effect is seen as the lines do not touch the points, leaving a small gap (set by argumentdistance).

Legends

Reposition the legend onto the plot. Exactly where you want it:

dsamp<-diamonds[sample(nrow(diamonds),1000), ]d<- ggplot(dsamp, aes(carat,price))+  geom_point(aes(colour=clarity))reposition_legend(d,'top left')

The legend repositioned onto the top left corner of the panel.

Scavenging the Internet, we have found some functions that help work with legends.

Frequently appearing onStack Overflow, we bring youg_legend:

library(grid)legend<- g_legend(d)grid.newpage()grid.draw(legend)

The legend grob, by itself.

Originally brought to you by (Baptiste Auguié)[http://baptiste.github.io/] (https://github.com/tidyverse/ggplot2/wiki/Share-a-legend-between-two-ggplot2-graphs) and (Shaun Jackman)[http://rpubs.com/sjackman] (http://rpubs.com/sjackman/grid_arrange_shared_legend). We put it in a package.

dsamp<-diamonds[sample(nrow(diamonds),1000), ]p1<- qplot(carat,price,data=dsamp,colour=clarity)p2<- qplot(cut,price,data=dsamp,colour=clarity)p3<- qplot(color,price,data=dsamp,colour=clarity)p4<- qplot(depth,price,data=dsamp,colour=clarity)grid_arrange_shared_legend(p1,p2,p3,p4,ncol=2,nrow=2)

Four plots that share the same legend.

Extensions to knitr

knitr allows S3 methods forknit_print for specialised printing of objects. We providelemon_print for data frames, dplyr tables, and summary objects, that can be used to render the output, without mucking up the code source. An added benefit is that we can use RStudio's inline data frame viewer:

Viewing data frames in R Notebooks in RStudio

Relative file paths made safe

Usingknitr for computations that use external binaries and/or write temporary files, setting the root directory forknitr's knitting saves the user from a file mess. E.g.

knitr::opts_knit$set(root.dir=TMPDIR)

But we want to keep our file paths relative for the scripts / document to be transferable. We introduce the.dot functions:

TMPDIR=tempdir().data<- .dot('data')knitr_opts_knit$set(root.dir=TMPDIR)

We can then load our data file using the created.data function, even though the chunk is executed from TMPDIR.

dat<- read.table(.data('mydata.tab'))

Packages

No packages published

Contributors2

  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp