Thursday, November 29, 2012

Sorting Within Lattice Graphics in R

Default

By default, lattice sorts the observations by the axis values, starting at the bottom left.

For example,

library(lattice)
colors = c("#1B9E77", "#D95F02", "#7570B3")
dotplot(rownames(mtcars) ~ mpg,
 data = mtcars,
 col = colors[1],
 pch = 1)

produces:
Default lattice dotplot
(Note: The rownames(cars) bit is just because of how this data set is stored. For your data, you might just type the variable name (model, for example) instead.)

Graphing one variable, sorting by another

If we want to show the same data, but we want to sort by another variable (or the same variable, for that matter), we can just add reorder(yvar, sortvar). For example, to sort by the number of cylinders, we could:

dotplot(reorder(rownames(mtcars), cyl) ~ mpg,
 data = mtcars,
 col = colors[1],
 pch = 1)
Sorted by number of cylinders

Graphing two variables

To better show how this works, let's graph cyl alongside mpg, so we can see how it is sorting:

dotplot(reorder(rownames(mtcars), cyl) ~ mpg + cyl,
 data = mtcars,
 col = colors,
 pch = c(1, 0))
Graph of mpg and cyl, sorted by cyl

Reverse order

We can also sort in reverse order, by adding a "-" before the variable name:

dotplot(reorder(rownames(mtcars), -cyl) ~ mpg + cyl,
 data = mtcars,
 col = colors,
 pch = c(1, 0))
Graph of mpg and cyl, sorted by cyl, reversed

Adding a legend

We can also add a legend:

dotplot(reorder(rownames(mtcars), -cyl) ~ mpg + cyl,
 data = mtcars,
 xlab = "",
 col = colors,
 pch = c(1, 0),
 key = list(points = list(col = colors[1:2], pch = c(1, 0)),
  text = list(c("Miles per gallon", "Number of cylinders")),
  space = "bottom"))
With legend

Other lattice types

The same technique will work with other lattice graphs, such as barchart, bwplot, and stripplot.

Full code available as a gist.

Thursday, November 15, 2012

Subfigures in LaTeX

How can you create subfigures or subfloats in LaTeX? It's often easy to combine multiple figures from within a statistical package or image software, but it's generally best not to if you want to include subcaptions as text, for improved searchability.

Fortunately the subcaption package in LaTeX allows us to do this easily. (The subfigure and subfig packages have been deprecated, so it's best to use subcaption instead.)

How can you make more than one image or table be part of a LaTeX figure while still being able to create text captions for each?

Using the word clouds from my R word cloud tutorial, let's look at an example:


In order to make the figure containing the subfigures, we'll need to decide a few things first. Then it's just a matter of letting LaTeX know our preferences:

We also need to let LaTeX know to use the caption and subcaption packages. The full code for the example image above is included below, and also in a gist.


\documentclass{article}

\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}

\begin{document}

\begin{figure}
 \centering
 \begin{subfigure}{0.4\textwidth} % width of left subfigure
  \includegraphics[width=\textwidth]{rncalt.png}
  \caption{RNC} % subcaption
 \end{subfigure}
 \vspace{1em} % here you can insert horizontal or vertical space
 \begin{subfigure}{0.4\textwidth} % width of right subfigure
  \includegraphics[width=\textwidth]{dncalt.png}
  \caption{DNC} % subcaption
 \end{subfigure}
 \caption{Wordcloud of national conventions} % caption for whole figure
\end{figure}

\end{document}

For more information, this wikibooks article is useful.


--
This post is one part of my series on LaTeX.

Thursday, November 8, 2012

White Space in LaTeX


Extra spaces and line breaks in your source file are ignored. But there are several ways to force LaTeX to introduce white space to your documents.

The most simple commands to insert a specific amount of white space into your document are \hspace and \vspace.

To produce vertical space, use \vspace followed by the length of the space in brackets. This length can be represented in any units recognized by LaTeX, e.g. \vspace{2 in}. The space between the number and the unit is optional, so \vspace{2in} will also work.

Similarly, you can use \hspace to insert horizontal space in your document, e.g., \hspace{2 in}.

If \hspace and \vspace are not working as you would like (often at the beginning or end of a line or page), you can instead use \hspace* and \vspace*, which will force space to appear.

If you want to put in as much blank space as possible (while still maintaining page margins, etc.), you can use \hfill and \vfill.

Multiples of \vfill or \hfill on a particular page or in an environment will fill an even amount of the space. (E.g., if there are 6 inches to be filled and 3 \vfill's, each will take 2 inches.)

Horizontal

As well as \hspace{} and \hfill, there are some horizontal-specific commands for adding white space.

\quad creates a space whose size is relative to the current font size and font face. \quad is equal to \hspace{1em}. There are other commands that make spaces of sizes relative to \quad:

Horizontal space commands in LaTeX

Vertical

Probably the most common white space command is \\. It is used to start a new paragraph.

That's not the only way to tell LaTeX to break a line. Here are a number of ways to do that in different situations:

commandaction

\\Start a new paragraph
\linebreak[number]Start a new line, option to request, not require
\newlineLine break (only in paragraph mode)
Line breaks in LaTeX

\newline or \linebreak can be beneficial because they work inside the tabular environment (when a p column definition is used), where \\ will not work within a cell.

As well as using \vspace{} and \vfill, there are some specific commands for vertical white space:

  • \smallskip
  • \medskip
  • \bigskip

The sizes of \smallskip, \medskip, and \bigskip are determined by the documentclass.

Example of skip sizes

There are also several kinds of ways to break a page, which sometimes creates white space:

commandaction

\pagebreakStarts a new page, using white space throughout to fill the full page before the break
\newpageStarts a new page, leaving the rest of the page before the break blank
\clearpageLike \newpage, but also prints all prior figures
\cleardoublepageLike \clearpage, but next page with print will be odd
Page breaks in LaTeX

Here's an example of the difference between \pagebreak and \newpage.

More information


--
This post is one part of my series on LaTeX.

Thursday, November 1, 2012

Units in LaTeX

Discrete units

These are your basic units, like inches, centimeters, and points. Conversion of units from here and here.

These tables show the relative sizes of each unit:

Relative sizes of units in LaTeX, inches

Relative sizes of units in LaTeX, cm

Units defined relative to font sizes

There also are sizes that are relative to the current font face and font size. The size ex is usually the same as the height of an "x", and the size em is usually (but less often) equal to the width of an "M".

Since these are relative to your font, don't be surprised if your attempts look different than mine. Just like their absolute sizes, the size of ex relative to em is not consistent across fonts.

Examples of font-relative units

Units defined relative to document

There also are units that have definitions relative to your document. These are determined based on your documentclass, and can also be explicitly changed.

A list of these and how to change them is available here. Some of the sizes are illustrated here.


commandsize

\paperwidthWidth of page
\paperheightHeight of page
\textwidthWidth of text
\textheightHeight of text
\linewidthWidth of a line, usually equal to \textwidth, but varies with environment
\columnwidthWidth of a column, usually same as \linewidth
\columnsepDistance between columns
\tabcolsepSeparation between columns in a tabular environment
\parindentParagraph indentation
\parskipThe extra vertical space between paragraphs
\baselineskipVertical distance between lines in a paragraph
\baselinestretchMultiplies \baselineskip
\unitlengthUnits of length in a picture environment
\topmarginSize of top margin
\evensidemarginMargin of even pages
\oddsidemarginMargin of odd pages
Document size commands in LaTeX

Next, we'll learn how to use these units to add white space.


--
This post is one part of my series on LaTeX.