1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
| library(ggplot2) library(ggprism) library(ggnewscale)
library(dplyr)
library(tidyr)
df <- data.frame( agonist = c(1e-10, 1e-8, 3e-8, 1e-7, 3e-7, 1e-6, 3e-6, 1e-5, 3e-5, 1e-4, 3e-4), ctr1 = c(0, 11, 125, 190, 258, 322, 354, 348, NA, 412, NA), ctr2 = c(3, 33, 141, 218, 289, 353, 359, 298, NA, 378, NA), ctr3 = c(2, 25, 160, 196, 345, 328, 369, 372, NA, 399, NA), trt1 = c(3, NA, 11, 52, 80, 171, 289, 272, 359, 352, 389), trt2 = c(5, NA, 25, 55, 77, 195, 230, 333, 306, 320, 338), trt3 = c(4, NA, 28, 61, 44, 246, 243, 310, 297, 365, NA) ) %>% mutate(log.agonist = log10(agonist)) %>% pivot_longer( c(-agonist, -log.agonist), names_pattern = "(.{3})([0-9])", names_to = c("treatment", "rep"), values_to = "response" ) %>% filter(!is.na(response))
head(df)
dose_resp <- y ~ min + ((max - min) / (1 + exp(hill_coefficient * (ec50 - x))))
p <- ggplot(df, aes(x = log.agonist, y = response))
p <- p + geom_smooth( aes(colour = treatment), method = "nls", formula = dose_resp, se = FALSE, method.args = list(start = list(min = 1.67, max = 397, ec50 = -7, hill_coefficient = 1)) ) p
p <- p + scale_colour_manual( labels = c("No inhibitor", "Inhibitor"), values = c("#00167B", "#9FA3FE") ) p
p <- p + ggnewscale::new_scale_colour() + geom_point(aes(colour = treatment, shape = treatment), size = 3) + scale_colour_prism( palette = "winter_bright", labels = c("No inhibitor", "Inhibitor") ) + scale_shape_prism( labels = c("No inhibitor", "Inhibitor") ) p
p <- p + theme_prism(palette = "winter_bright", base_size = 16) p
p <- p + scale_y_continuous( limits = c(-100, 500), breaks = seq(-100, 500, 100), guide = "prism_offset" ) p
p <- p + scale_x_continuous( limits = c(-10, -3), breaks = -10:-3, guide = "prism_offset_minor", minor_breaks = log10(rep(1:9, 7)*(10^rep(-10:-4, each = 9))), labels = function(lab) { do.call( expression, lapply(paste(lab), function(x) bquote(bold("10"^.(x)))) ) } ) p
p <- p + theme( axis.title.y = element_blank(), legend.title = element_blank(), legend.position = c(0.05, 0.95), legend.justification = c(0.05, 0.95) ) + labs(x = "[Agonist], M") p
dose_resp <- y ~ min + ((max - min) / (1 + exp(hill_coefficient * (ec50 - x))))
ggplot(df, aes(x = log.agonist, y = response)) + geom_smooth( aes(colour = treatment), method = "nls", formula = dose_resp, se = FALSE, method.args = list(start = list(min = 1.67, max = 397, ec50 = -7, hill_coefficient = 1)) ) + scale_colour_manual(labels = c("No inhibitor", "Inhibitor"), values = c("#00167B", "#9FA3FE")) + ggnewscale::new_scale_colour() + geom_point(aes(colour = treatment, shape = treatment), size = 3) + scale_colour_prism(palette = "winter_bright", labels = c("No inhibitor", "Inhibitor")) + scale_shape_prism(labels = c("No inhibitor", "Inhibitor")) + theme_prism(palette = "winter_bright", base_size = 16) + scale_y_continuous(limits = c(-100, 500), breaks = seq(-100, 500, 100), guide = "prism_offset") + scale_x_continuous( limits = c(-10, -3), breaks = -10:-3, guide = "prism_offset_minor", minor_breaks = log10(rep(1:9, 7)*(10^rep(-10:-4, each = 9))), labels = function(lab) { do.call( expression, lapply(paste(lab), function(x) bquote(bold("10"^.(x)))) ) } ) + theme(axis.title.y = element_blank(), legend.title = element_blank(), legend.position = c(0.05, 0.95), legend.justification = c(0.05, 0.95)) + labs(x = "[Agonist], M")
R
|