title: Fill area under and between certain lines using ggplot2
body: <p>Here's the example data:</p>
  
  <pre><code>ex_data &lt;- structure(list(variable = c("Act", "Act", "Act", "Act", "Act", 
  "Act", "Act", "Act", "Act", "Act", "Act", "Act", "Act", "Act", 
  "Act", "Act", "Act", "Act", "Act", "Act", "Act", "Act", "Act", 
  "Act", "Act", "Act", "Act", "Act", "Act", "Act", "Act", "Act", 
  "Act", "Act", "Act", "Act", "Act", "Act", "Proj", "Proj", "Proj", 
  "Proj", "Proj", "Proj", "Proj", "Proj", "Proj", "Proj", "Proj", 
  "Proj", "Proj", "Proj", "Proj", "Proj", "Proj", "Goal", "Goal", 
  "Goal", "Goal", "Goal", "Goal", "Goal", "Goal", "Goal", "Goal", 
  "Goal", "Goal", "Thresh", "Thresh", "Thresh", "Thresh", "Thresh", 
  "Thresh", "Thresh", "Thresh", "Thresh", "Thresh", "Thresh", "Thresh"
  ), value = c(6.89658227475411, 6.89108850833475, 6.91060575775871, 
  7.00129392659955, 7.1096850611615, 7.07369364373404, 7.06060119204421, 
  7.21032922407943, 7.34249288006833, 7.39138104921065, 7.4318910161, 
  7.5961207493889, 7.85673978348162, 7.92089086256755, 7.95756924344796, 
  7.98326636757226, 8.0193147690931, 7.97898702366837, 8.08257378865854, 
  8.07398725017176, 7.97609133959215, 8.09248918915805, 8.13257527841791, 
  8.03078376104876, 7.88034051912236, 7.82481943232295, 7.72428815030338, 
  7.55539008452296, 7.42128217313615, 7.45838229538017, 7.41767125677876, 
  7.31265597647537, 7.35972091839823, 7.27265834882302, 7.15542963221048, 
  7.1447264083441, 7.35752135743515, 7.59728236343906, 7.32707490147607, 
  7.25109817340699, 7.20263208921773, 7.23082681383693, 7.24648885635746, 
  7.3729353600057, 7.43036853995031, 7.53395376136055, 7.60535703635852, 
  7.61387042389277, 7.60922305418595, 7.65197881774436, 7.63187616748886, 
  7.65717987566166, 7.74016035808493, 7.79327615657051, 7.61036111666667, 
  6.93055923840536, 6.98454642755329, 7.08191653567892, 7.149035614177, 
  7.15703819845921, 7.15266967093479, 7.19286008867969, 7.17396359743953, 
  7.19774908312196, 7.27575073659984, 7.32567958717628, 7.15373944966667, 
  7.22547665280559, 7.2817611691513, 7.38327468613334, 7.45324989563134, 
  7.46159301541492, 7.45703859310223, 7.49893924138947, 7.47923864413908, 
  7.50403627814842, 7.58535715092323, 7.6374106334391, 7.45815389433333
  ), measure = c(5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
  5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  ), NewDate = structure(c(1354320000, 1356998400, 1359676800, 
  1362096000, 1364774400, 1367366400, 1370044800, 1372636800, 1375315200, 
  1377993600, 1380585600, 1383264000, 1385856000, 1388534400, 1391212800, 
  1393632000, 1396310400, 1398902400, 1401580800, 1404172800, 1406851200, 
  1409529600, 1412121600, 1414800000, 1417392000, 1420070400, 1422748800, 
  1425168000, 1427846400, 1430438400, 1433116800, 1435708800, 1438387200, 
  1441065600, 1443657600, 1446336000, 1448928000, 1451606400, 1438387200, 
  1441065600, 1443657600, 1446336000, 1448928000, 1451606400, 1454284800, 
  1456790400, 1459468800, 1462060800, 1464739200, 1467331200, 1470009600, 
  1472688000, 1475280000, 1477958400, 1480550400, 1451606400, 1454284800, 
  1456790400, 1459468800, 1462060800, 1464739200, 1467331200, 1470009600, 
  1472688000, 1475280000, 1477958400, 1480550400, 1451606400, 1454284800, 
  1456790400, 1459468800, 1462060800, 1464739200, 1467331200, 1470009600, 
  1472688000, 1475280000, 1477958400, 1480550400), class = c("POSIXct", 
  "POSIXt"), tzone = "UTC")), .Names = c("variable", "value", "measure", 
  "NewDate"), row.names = c(5052L, 5053L, 5054L, 5055L, 5056L, 
  5057L, 5058L, 5059L, 5060L, 5061L, 5062L, 5063L, 5064L, 5065L, 
  5066L, 5067L, 5068L, 5069L, 5070L, 5071L, 5072L, 5073L, 5074L, 
  5075L, 5076L, 5077L, 5078L, 5079L, 5080L, 5081L, 5082L, 5083L, 
  5084L, 5085L, 5086L, 5087L, 5088L, 5089L, 5336L, 5337L, 5338L, 
  5339L, 5340L, 5341L, 5342L, 5343L, 5344L, 5345L, 5346L, 5347L, 
  5348L, 5349L, 5350L, 5351L, 5352L, 5593L, 5594L, 5595L, 5596L, 
  5597L, 5598L, 5599L, 5600L, 5601L, 5602L, 5603L, 5604L, 5845L, 
  5846L, 5847L, 5848L, 5849L, 5850L, 5851L, 5852L, 5853L, 5854L, 
  5855L, 5856L), class = "data.frame")
  </code></pre>
  
  <p>I can create a geom_line() chart as seen here using: </p>
  
  <p><code>ggplot(ex_data, aes(x=NewDate, y=value, colour=variable)) + geom_line()</code></p>
  
  <p><a href="https://i.stack.imgur.com/CraHK.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/CraHK.png" alt="basic geom_line() chart"></a></p>
  
  <p>However, I'd like to be able to fill in the area under the Proj (blue) line until it meets the Thresh (purple) line, the area under the Thresh line until it meets the Goal (green) line and everything under the Goal line to y = 0.</p>
  
  <p>When I try a basic area chart for all lines, the chart seems to distort the y-values:</p>
  
  <p><code>ggplot(ex_data, aes(x=NewDate, y=value)) + geom_area(aes(fill=variable)) + geom_line()</code></p>
  
  <p><a href="https://i.stack.imgur.com/E5zgH.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/E5zgH.png" alt="basic area chart"></a></p>
  
  <p>I tried to follow this example here: <a href="https://stackoverflow.com/questions/28730083/filling-in-the-area-under-a-line-graph-in-ggplot2-geom-area">Filling in the area under a line graph in ggplot2: geom_area()</a></p>
  
  <p>The end result would be very similar to a forecast chart where the first line has no fill but the last 3 lines have fills between them like this one:
  <a href="https://i.stack.imgur.com/4MXBR.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4MXBR.png" alt="enter image description here"></a></p>