It's difficult for me to create a reproducible example of this as the issue only seems to show as the size of the data frame goes up to too large to paste here. I hope someone will bear with me and help here. I'm sure I'm doing something stupid but reading the help and searching is failing (perhaps on the "stupid" issue.)
I have a data frame of 2,319 rows and three variables: clientID, month and nSlots where clientID is character, month is 1:12 and nSlots is 1:2.
> head(tmpDF2)
   month clientID2 nSlots
21     1         8      1
30     2         8      1
31     4         8      1
28     5         8      1
25     6         8      1
24     7         8      1
Here's table(tmpDF2$nSlots)
> table(tmpDF2$nSlots, useNA = "always")
   1    2 <NA> 
1844   15    0 
I'm trying to use ggplot and geom_tile to plot the attendance of clients and I expect two colours for the tiles depending on the two values of nSlots but when the size of the data frame goes up, I am getting a third colour.  Here is is the plot.
OK. Well I gather you can't see that so perhaps I should stop here! Aha, or maybe you can click through to that link. I hope so!
Here's the code then for what it's worth.
ggplot(dat=tmpDF2,
       aes(x=month,y=clientID2,fill=nSlots)) +
  geom_tile() +
  # geom_text(aes(label=nSlots)) +
  theme(panel.background = element_blank()) +
  theme(axis.text.x=element_text(angle=90,hjust=1)) +
  theme(axis.text.y=element_blank(),
        axis.ticks.y=element_blank(),
        axis.line=element_line()) +
  ylab("clients")
The bizarre thing (to me) is that when I keep the number of rows small, the plot seems to work fine but as the number goes up, there's a point, and I've failed utterly to find if one row in the data or value of nrow(tmpDF2) triggers it, when this third colour, a paler value than the one in the legend, appears.
TIA,
Chris

 
    