title: Free colour scales in facet_grid
body: <p>Say I have the following data frame:</p>
  
  <pre><code># Set seed for RNG
  set.seed(33550336)
  
  # Create toy data frame
  loc_x &lt;- c(a = 1, b = 2, c = 3)
  loc_y &lt;- c(a = 3, b = 2, c = 1)
  scaling &lt;- c(temp = 100, sal = 10, chl = 1) 
  
  df &lt;- expand.grid(loc_name = letters[1:3], 
                    variables = c("temp", "sal", "chl"), 
                    season = c("spring", "autumn")) %&gt;% 
    mutate(loc_x = loc_x[loc_name],
           loc_y = loc_y[loc_name],
           value = runif(nrow(.)),
           value = value * scaling[variables])
  </code></pre>
  
  <p>which looks like,</p>
  
  <pre><code># &gt; head(df)
  #   loc_name variables season loc_x loc_y     value
  # 1        a      temp spring     1     3 86.364697
  # 2        b      temp spring     2     2 35.222573
  # 3        c      temp spring     3     1 52.574082
  # 4        a       sal spring     1     3  0.667227
  # 5        b       sal spring     2     2  3.751383
  # 6        c       sal spring     3     1  9.197086
  </code></pre>
  
  <p>I want to plot these data in a facet grid using <code>variables</code> and <code>season</code> to define panels, like this:</p>
  
  <pre><code>g &lt;- ggplot(df) + geom_point(aes(x = loc_name, y = value), size = 5)
  g &lt;- g + facet_grid(variables ~ season) 
  g
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/AxXqg.png" rel="noreferrer"><img src="https://i.stack.imgur.com/AxXqg.png" alt="enter image description here"></a></p>
  
  <p>As you can see, different <code>variables</code> have very different scales. So, I use <code>scales = "free"</code> to account for this.</p>
  
  <pre><code>g &lt;- ggplot(df) + geom_point(aes(x = loc_name, y = value), size = 5)
  g &lt;- g + facet_grid(variables ~ season, scales = "free") 
  g
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/oV0bs.png" rel="noreferrer"><img src="https://i.stack.imgur.com/oV0bs.png" alt="enter image description here"></a></p>
  
  <p>Mucho convenient. Now, say I want to do this, but plot the points by <code>loc_x</code> and <code>loc_y</code> and have <code>value</code> represented by colour instead of y position:</p>
  
  <pre><code>g &lt;- ggplot(df) + geom_point(aes(x = loc_x, y = loc_y, colour = value), 
                               size = 5)
  g &lt;- g + facet_grid(variables ~ season, scales = "free") 
  g &lt;- g + scale_colour_gradient2(low = "#3366CC", 
                                  mid = "white", 
                                  high = "#FF3300", 
                                  midpoint = 50) 
  g
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/bw7on.png" rel="noreferrer"><img src="https://i.stack.imgur.com/bw7on.png" alt="enter image description here"></a></p>
  
  <p>Notice that the <em>colour</em> scales are not free and, like the first figure, values for <code>sal</code> and <code>chl</code> cannot be read easily. </p>
  
  <p>My question: is it possible to do an equivalent of <code>scales = "free"</code> but for colour, so that each row (in this case) has a separate colour bar? Or, do I have to plot each variable (i.e., row in the figure) and patch them together using something like <code>cowplot</code>?</p>