Adding lines to a correlation plot

60 views Asked by At

I'm trying to create a correlation plot between drug concentrations at +/- oxygen faceted by the drug identity. So far it looks good, but I'd like to add lines connecting the dots but I can't seem to figure out how. ?args for stat_cor didn't help.

```ggplot(df, mapping = aes(Oxygen, concentration)) + geom_point() + facet_wrap(~Drug, scales = 'free') + stat_cor()```

I also tried ggscatter, but to no success.

```ggscatter(df, x = 'Oxygen', y = 'concentration', add = 'reg.line') + facet_wrap(~Drug, scales = 'free') + stat_cor()```

Please see the dataframe below:

structure(list(Sample = c(1, 2, 3, 4, 5, 6, 43, 46, 47, 83, 84, 
    86, 87, 125, 126, 127, 129, 165, 167, 168, 169, 170, 206, 207, 
    209, 210, 211, 247, 248, 249, 251, 252, 288, 289, 290, 291, 293, 
    329, 330, 331, 332, 333, 370, 371, 372, 373, 374, 375, 411, 412, 
    413, 414, 415, 416, 452, 453, 454, 455, 456, 457, 493, 494, 495, 
    497, 498, 534, 535, 536, 537, 538, 539, 575, 576, 577, 578, 579, 
    580, 616, 618, 619, 620, 621, 657, 658, 659, 660, 662, 698, 699, 
    700, 701, 702, 703, 739, 740, 741, 742, 743, 744, 780, 781, 782, 
    783, 784, 785, 821, 822, 823, 824, 825, 826, 862, 863, 864, 865, 
    866, 867, 905, 906, 907, 908, 944, 945, 947, 948, 985, 986, 987, 
    988, 990, 1026, 1027, 1028, 1029, 1030, 1031, 1067, 1068, 1069, 
    1070, 1071, 1072, 1108, 1109, 1110, 1111, 1112, 1113, 1149, 1150, 
    1151, 1152, 1153, 1154, 1190, 1192, 1193, 1194, 1195, 1231, 1232, 
    1233, 1234, 1236, 1272, 1273, 1274, 1275, 1276, 1277, 1313, 1314, 
    1315, 1316, 1317, 1318, 1354, 1355, 1357, 1358, 1359, 1395, 1396, 
    1397, 1398, 1399, 1400, 1436, 1437, 1438, 1439, 1440, 1441, 1477, 
    1478, 1479, 1480, 1481, 1482, 1518, 1519, 1520, 1521, 1522, 1523, 
    1559, 1560, 1561, 1562, 1563, 1564, 1600, 1601, 1602, 1603, 1604, 
    1605, 1641, 1642, 1643, 1644, 1645, 1646, 1682, 1683, 1684, 1685, 
    1686, 1687, 1723, 1724, 1725, 1726, 1727, 1728, 1764, 1767, 1768, 
    1769, 1806, 1807, 1846, 1848, 1849, 1850, 1887, 1888, 1890, 1891, 
    1892, 1928, 1929, 1930, 1932, 1933, 1969, 1970, 1971, 1972, 1974, 
    2010, 2011, 2012, 2013, 2014, 2051, 2052, 2053, 2054, 2055, 2056, 
    2092, 2093, 2094, 2095, 2096, 2097, 2133, 2134, 2135, 2136, 2137, 
    2138, 2174, 2175, 2176, 2177, 2178, 2179, 2215, 2217, 2218, 2219, 
    2220, 2256, 2257, 2258, 2259, 2260, 2297, 2298, 2299, 2300, 2301, 
    2302, 2338, 2340, 2341, 2342, 2343, 2379, 2380, 2381, 2382, 2384, 
    2420, 2421, 2422, 2423, 2424, 2425, 2461, 2462, 2463, 2464, 2465, 
    2466, 2502, 2503, 2504, 2505, 2506, 2507, 2543, 2544, 2545, 2546, 
    2547, 2548, 2584, 2585, 2586, 2587, 2588, 2589), Drug = c("Ab1", 
    "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab2", "Ab5", "Ab6", "Ab1", 
    "Ab2", "Ab4", "Ab5", "Ab2", "Ab3", "Ab4", "Ab6", "Ab1", "Ab3", 
    "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab4", "Ab5", "Ab6", "Ab1", 
    "Ab2", "Ab3", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab6", 
    "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab1", "Ab2", "Ab3", "Ab4", 
    "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", 
    "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab5", 
    "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", 
    "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab3", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab2", "Ab3", "Ab4", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
    "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", 
    "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
    "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab3", 
    "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab4", "Ab5", "Ab1", "Ab2", 
    "Ab3", "Ab4", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
    "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
    "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", 
    "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
    "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
    "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
    "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab4", "Ab5", "Ab6", "Ab2", "Ab3", "Ab1", "Ab3", "Ab4", 
    "Ab5", "Ab1", "Ab2", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
    "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab6", "Ab1", "Ab2", 
    "Ab3", "Ab4", "Ab5", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", 
    "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", 
    "Ab1", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
    "Ab5", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab3", 
    "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab6", "Ab1", 
    "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
    "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", 
    "Ab2", "Ab3", "Ab4", "Ab5", "Ab6", "Ab1", "Ab2", "Ab3", "Ab4", 
    "Ab5", "Ab6"), concentration = c(538, 40, 7300, 530, 127, 230, 
    50, 140, 215, 440, 50, 540, 120, 3850, 12340, 5090, 3190, 610, 
    6360, 520, 140, 190, 500, 30, 460, 120, 190, 350, 30, 6070, 50, 
    150, 370, 40, 6670, 440, 220, 3820, 3860, 11960, 5350, 2000, 
    2570, 1670, 11390, 3950, 1170, 810, 3240, 2610, 11840, 4400, 
    1580, 1900, 320, 30, 6150, 300, 110, 150, 2560, 1660, 11910, 
    1120, 870, 3830, 3610, 12320, 5440, 2040, 2860, 2810, 1840, 11250, 
    2730, 1040, 1080, 3430, 12440, 5160, 1770, 2230, 400, 90, 3480, 
    230, 90, 490, 120, 3230, 270, 170, 110, 550, 150, 3570, 330, 
    190, 120, 430, 110, 3010, 240, 150, 130, 690, 120, 4050, 270, 
    200, 130, 660, 80, 3530, 220, 160, 80, 3530, 260, 170, 110, 680, 
    70, 220, 160, 1240, 1430, 3800, 4700, 990, 560, 460, 2770, 3500, 
    310, 330, 1120, 1230, 3000, 5000, 720, 890, 910, 860, 2930, 4540, 
    480, 590, 1410, 1550, 3990, 5140, 900, 1170, 1710, 4060, 5440, 
    1120, 1290, 690, 780, 2830, 3390, 470, 1650, 1820, 4220, 5430, 
    990, 1470, 2630, 530, 4050, 580, 350, 380, 1230, 120, 280, 120, 
    110, 1860, 700, 3720, 700, 440, 500, 1290, 230, 4020, 300, 170, 
    140, 2920, 640, 4650, 690, 380, 390, 1790, 880, 4320, 830, 530, 
    620, 970, 200, 3740, 310, 190, 120, 2880, 700, 4080, 760, 470, 
    520, 1450, 90, 5310, 920, 150, 140, 1360, 60, 5190, 800, 130, 
    120, 1370, 100, 5100, 1040, 140, 140, 1250, 770, 130, 110, 130, 
    5430, 1710, 5530, 1100, 170, 1390, 110, 1070, 160, 140, 1540, 
    100, 5720, 170, 170, 1260, 30, 4140, 260, 40, 710, 20, 3530, 
    220, 80, 1000, 40, 3720, 210, 80, 50, 610, 30, 3710, 180, 60, 
    50, 2030, 30, 3820, 240, 70, 60, 720, 20, 3590, 180, 80, 50, 
    820, 3710, 160, 70, 50, 660, 20, 3450, 160, 60, 310, 80, 4910, 
    370, 130, 80, 230, 3830, 260, 120, 90, 230, 100, 3910, 410, 120, 
    190, 60, 4210, 240, 100, 80, 320, 70, 4220, 330, 120, 60, 220, 
    80, 3910, 320, 120, 110, 220, 50, 3830, 260, 100, 80, 20, 10, 
    40, 10, 10, 10), Oxygen = c("+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "-", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "-", "-", "-", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
    "+", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "-", "-", "-", "-", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "-", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "-", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "-", "-", "-", "-", "-", "+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", "+", 
    "+", "+", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", 
    "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-", "-"
    ), Donor = c("D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", 
    "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", 
    "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D1", 
    "D1", "D1", "D1", "D1", "D1", "D1", "D1", "D2", "D2", "D2", "D2", 
    "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", 
    "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", 
    "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", 
    "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D2", "D3", "D3", "D3", 
    "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", 
    "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", 
    "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D3", 
    "D3", "D3", "D3", "D3", "D3", "D3", "D3", "D4", "D4", "D4", "D4", 
    "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", 
    "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", 
    "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", 
    "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D4", "D5", "D5", "D5", 
    "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", 
    "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", 
    "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", 
    "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", "D5", 
    "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", 
    "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", 
    "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", "D6", 
    "D6", "D6", "D6", "D6", "D6", "D7", "D7", "D7", "D7", "D7", "D7", 
    "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", 
    "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", 
    "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", "D7", 
    "D7", "D7", "D7", "D7", "D7", "D8", "D8", "D8", "D8", "D8", "D8", 
    "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", 
    "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", 
    "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", "D8", 
    "D8", "D8", "D8", "D8", "D8", "D8", "D8"), Illness = c("pneumonia", 
    "pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
    "gastro", "gastro", "gastro", "TB", "TB", "TB", "TB", "lyme", 
    "lyme", "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", 
    "pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
    "gastro", "TB", "TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", 
    "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
    "pneumonia", "gastro", "gastro", "gastro", "gastro", "gastro", 
    "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", "lyme", 
    "lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", 
    "pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
    "gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", 
    "lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", 
    "pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
    "gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", 
    "lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", 
    "pneumonia", "pneumonia", "pneumonia", "pneumonia", "gastro", 
    "gastro", "gastro", "gastro", "gastro", "gastro", "TB", "TB", 
    "TB", "TB", "lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", 
    "pneumonia", "pneumonia", "pneumonia", "gastro", "gastro", "gastro", 
    "gastro", "gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", 
    "lyme", "lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", 
    "pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
    "gastro", "gastro", "gastro", "gastro", "gastro", "TB", "TB", 
    "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", "lyme", "lyme", 
    "pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
    "pneumonia", "gastro", "gastro", "gastro", "gastro", "gastro", 
    "TB", "TB", "TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", 
    "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
    "pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
    "gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", 
    "lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", "pneumonia", 
    "pneumonia", "pneumonia", "pneumonia", "pneumonia", "gastro", 
    "gastro", "gastro", "gastro", "gastro", "gastro", "TB", "TB", 
    "TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", "pneumonia", 
    "pneumonia", "gastro", "gastro", "gastro", "gastro", "TB", "TB", 
    "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", 
    "pneumonia", "pneumonia", "pneumonia", "pneumonia", "gastro", 
    "gastro", "gastro", "gastro", "gastro", "TB", "TB", "TB", "TB", 
    "TB", "TB", "lyme", "lyme", "lyme", "lyme", "lyme", "lyme", "pneumonia", 
    "pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
    "gastro", "gastro", "gastro", "gastro", "gastro", "gastro", "TB", 
    "TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", "lyme", 
    "pneumonia", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
    "pneumonia", "gastro", "gastro", "gastro", "gastro", "gastro", 
    "TB", "TB", "TB", "TB", "TB", "lyme", "lyme", "lyme", "lyme", 
    "lyme", "lyme", "pneumonia", "pneumonia", "pneumonia", "pneumonia", 
    "pneumonia", "pneumonia", "gastro", "gastro", "gastro", "gastro", 
    "gastro", "gastro", "TB", "TB", "TB", "TB", "TB", "TB", "lyme", 
    "lyme", "lyme", "lyme", "lyme", "lyme")), row.names = c(NA, -345L
    ), class = c("tbl_df", "tbl", "data.frame"))
1

There are 1 answers

3
Duck On BEST ANSWER

Maybe you are looking for this:

#Code 1
ggplot(df, mapping = aes(Oxygen, concentration)) +
  geom_point() +
  geom_line()+
  facet_wrap(~Drug, scales = 'free') +
  stat_cor()
#Code 2
ggplot(df, mapping = aes(Oxygen, concentration,group=1)) +
  geom_point() +
  geom_line()+
  facet_wrap(~Drug, scales = 'free') +
  stat_cor()

#Code 3
ggplot(df, mapping = aes(Oxygen, concentration,group=Drug)) +
  geom_point() +
  geom_path()+
  facet_wrap(~Drug, scales = 'free') +
  stat_cor()

Outputs:

enter image description here

enter image description here

enter image description here