Skip to content
Prev 320527 / 398506 Next

ggplot2: less than equal sign

Hi:

Here's a way you could do it entirely within ggplot2. The annotation
functions have a parse = argument which allows you to pass character
string representations of math expressions, but there is no such thing
in the scale functions, so you need a different approach.

library(ggplot2)
df <- data.frame(vis=c(0,0,1,1) , count=c(10,15,20,10) , grp=c(0,1,0,1))

# Generate a list of expressions that will become the legend labels
lbs <- list(expression(x <= 10), expression(x > 10))

ggplot(df, aes(x = factor(vis), y=count , fill=factor(grp)))  +
   geom_bar(stat ="identity") +
   scale_fill_manual(breaks = levels(factor(df$grp)),
                     values = c("blue", "orange"),
                     labels = lbs)

The specifications in scale_fill_manual() are:
    - breaks: the values to go on the horizontal axis
    - values: the vector of fill colors for each level of grp
    - labels: the legend labels
Notice that the labels = takes a list of expressions as its argument.
This approach gives you more control over the legend and choice of
fill colors at the expense of a couple of lines of code. To change the
axis and legend titles, one can use the labs() function; e.g.,

last_plot() + labs(x = "Visibility", y = "Frequency", fill = "Threshold")

Dennis
On Thu, Mar 28, 2013 at 2:22 PM, soon yi <soon.yi at ymail.com> wrote: