r – Change line width of specific boxplots with ggplot2

I am using the following code to generate a box plot:

df %>%
  ggplot2::ggplot(ggplot2::aes(x = group, y = count, fill = batch)) + 
  ggplot2::geom_boxplot(ggplot2::aes(lwd = stroke)) +
  ggplot2::scale_y_log10() + 
  ggplot2::theme_bw() + 
  ggplot2::theme(
    axis.text.x = ggplot2::element_text(angle = 90, hjust = 1),
    legend.position = "none"
  ) + 
  ggplot2::labs(title = nm_dds)

which produces this plot:
boxplot

I want the bold lines to be less thick, but adjusting the value of size_stroke has no effect. What am I doing wrong? Thanks.

In response to the comments, here is a reproducible example:


nm_dds <- "prefgF_becF_cvmodF_shF"

counts <- structure(c(0, 0, 2, 2906, 0, 0, 28, 0, 0, 0, 793, 5709, 4, 0, 
1356, 90, 2, 0, 13, 268, 658, 669, 118, 666, 0, 880, 0, 46, 247, 
100, 0, 0, 0, 0, 24, 671, 215, 6, 0, 72, 64, 544, 0, 227, 440, 
2, 0, 0, 0, 366, 0, 0, 0, 2681, 0, 0, 47, 0, 0, 1, 707, 5439, 
0, 0, 1246, 93, 0, 0, 23, 196, 547, 495, 113, 467, 0, 797, 0, 
46, 226, 60, 0, 0, 0, 0, 14, 688, 173, 1, 0, 47, 52, 502, 0, 
173, 390, 0, 0, 0, 0, 311, 0, 0, 0, 2284, 0, 0, 32, 0, 0, 0, 
727, 5191, 1, 7, 1094, 100, 1, 0, 8, 179, 541, 499, 117, 448, 
0, 691, 0, 49, 206, 78, 0, 0, 0, 0, 19, 585, 153, 6, 0, 87, 47, 
510, 0, 169, 375, 3, 0, 0, 0, 281, 0, 0, 2, 1945, 0, 0, 54, 0, 
0, 0, 633, 4791, 3, 2, 1340, 101, 0, 0, 7, 273, 519, 468, 112, 
857, 0, 717, 0, 81, 302, 88, 0, 0, 0, 0, 20, 659, 156, 7, 0, 
275, 66, 405, 0, 238, 330, 4, 0, 0, 0, 286, 0, 0, 0, 1912, 0, 
0, 59, 0, 0, 0, 557, 4293, 5, 1, 1127, 104, 2, 0, 0, 252, 459, 
481, 70, 724, 0, 642, 0, 77, 291, 81, 0, 0, 0, 0, 22, 551, 149, 
4, 0, 241, 61, 393, 0, 185, 310, 2, 0, 0, 0, 285, 0, 0, 1, 1892, 
0, 0, 39, 0, 0, 0, 497, 3656, 2, 3, 993, 94, 0, 0, 5, 217, 444, 
461, 95, 550, 0, 557, 0, 89, 226, 86, 0, 0, 0, 0, 19, 503, 144, 
0, 0, 304, 48, 380, 0, 188, 297, 4, 0, 0, 0, 256, 0, 0, 0, 1450, 
0, 0, 45, 0, 0, 0, 537, 3359, 0, 2, 2182, 107, 2, 0, 1, 338, 
472, 502, 82, 414, 0, 954, 0, 48, 335, 66, 0, 0, 0, 0, 40, 442, 
139, 0, 0, 585, 86, 336, 0, 257, 290, 1, 0, 0, 1, 326, 0, 0, 
0, 1598, 0, 0, 67, 0, 0, 0, 552, 3592, 0, 1, 1788, 92, 0, 0, 
5, 371, 444, 407, 88, 459, 0, 852, 0, 48, 307, 69, 0, 0, 0, 0, 
31, 422, 130, 1, 0, 731, 76, 338, 0, 264, 282, 1, 0, 0, 1, 284, 
0, 0, 1, 1839, 0, 0, 62, 0, 0, 0, 576, 4176, 0, 0, 1743, 113, 
1, 0, 0, 392, 483, 450, 87, 466, 0, 775, 0, 82, 357, 88, 0, 0, 
0, 0, 34, 531, 157, 0, 0, 1055, 85, 313, 0, 240, 357, 2, 0, 0, 
0, 322, 0, 0, 2, 2835, 0, 1, 92, 0, 0, 3, 1064, 7847, 1, 3, 2643, 
113, 2, 0, 56, 356, 650, 918, 135, 1243, 0, 1466, 0, 105, 359, 
81, 0, 0, 0, 0, 30, 905, 175, 3, 0, 102, 82, 675, 0, 344, 450, 
1, 0, 0, 4, 512, 0, 0, 5, 3036, 0, 0, 94, 0, 0, 2, 1056, 8830, 
3, 5, 2868, 108, 0, 0, 49, 365, 599, 900, 164, 1314, 0, 1483, 
1, 154, 334, 100, 0, 0, 0, 0, 35, 996, 206, 3, 0, 165, 75, 710, 
0, 363, 473, 3, 0, 0, 3, 541, 0, 0, 3, 2790, 0, 0, 83, 0, 0, 
1, 982, 8658, 5, 4, 2709, 104, 1, 0, 43, 341, 639, 755, 127, 
1272, 0, 1376, 0, 154, 331, 106, 0, 0, 0, 0, 24, 938, 227, 3, 
0, 137, 62, 744, 1, 346, 485, 1, 0, 0, 2, 467, 0, 0, 4, 2870, 
0, 0, 105, 0, 5, 2, 1576, 9938, 5, 4, 2515, 102, 1, 0, 72, 424, 
690, 930, 136, 1261, 0, 746, 0, 317, 430, 93, 0, 0, 0, 0, 48, 
993, 452, 18, 0, 44, 71, 517, 0, 414, 707, 0, 0, 0, 2, 509, 1, 
0, 2, 2640, 0, 0, 86, 0, 4, 0, 1440, 8869, 1, 4, 2363, 96, 0, 
0, 83, 375, 693, 1038, 114, 1158, 0, 740, 0, 286, 354, 99, 0, 
1, 0, 0, 63, 1003, 388, 12, 0, 26, 65, 485, 0, 375, 650, 1, 0, 
0, 5, 477, 0, 0, 1, 2816, 0, 0, 95, 0, 2, 2, 1485, 8370, 3, 6, 
2391, 104, 1, 0, 61, 377, 747, 1040, 102, 1066, 0, 808, 0, 281, 
352, 90, 0, 0, 0, 0, 50, 1017, 377, 17, 0, 30, 55, 514, 0, 399, 
716, 0, 0, 0, 0, 468, 0, 0, 16, 7482, 0, 0, 323, 0, 0, 2, 3859, 
30356, 9, 6, 11381, 512, 8, 0, 64, 1682, 3181, 3039, 664, 5347, 
0, 8045, 0, 545, 2237, 542, 0, 1, 0, 0, 193, 3346, 772, 60, 0, 
831, 533, 2611, 0, 1594, 2137, 3, 0, 0, 7, 2337, 0, 0, 4, 6041, 
0, 2, 270, 0, 0, 1, 3379, 24967, 5, 5, 9458, 438, 10, 0, 37, 
1171, 2601, 2768, 490, 4072, 0, 6498, 0, 300, 1849, 441, 0, 2, 
0, 0, 161, 2708, 658, 32, 0, 582, 415, 2090, 0, 1358, 1786, 4, 
0, 0, 10, 1845, 0, 0, 8, 6353, 0, 0, 314, 0, 0, 2, 3542, 28222, 
3, 3, 9963, 443, 3, 0, 46, 1392, 2955, 2983, 578, 4262, 0, 8051, 
0, 211, 2172, 554, 0, 4, 0, 0, 187, 2900, 673, 46, 0, 510, 514, 
2332, 0, 1536, 1962, 14, 0, 0, 8, 2048, 1, 0, 13, 5209, 0, 2, 
255, 0, 0, 1, 2982, 22262, 5, 11, 8089, 402, 5, 0, 45, 1131, 
2392, 2527, 440, 3491, 0, 6795, 0, 143, 1722, 397, 0, 2, 0, 0, 
158, 2409, 528, 39, 0, 459, 393, 1835, 0, 1221, 1708, 4, 0, 0, 
1, 1660, 0, 0, 8, 3784, 0, 3, 298, 0, 2, 6, 3234, 26388, 187, 
4, 8061, 433, 8, 0, 50, 1255, 3112, 2828, 454, 3934, 0, 2819, 
2, 555, 1587, 471, 0, 4, 0, 0, 175, 2510, 1307, 30, 0, 218, 294, 
1951, 0, 1443, 2315, 1, 0, 0, 6, 1617, 0, 0, 8, 4491, 0, 2, 262, 
0, 3, 3, 3308, 19851, 160, 9, 9911, 332, 5, 0, 43, 1130, 2899, 
3041, 483, 3595, 0, 3297, 3, 409, 1434, 593, 0, 5, 0, 0, 197, 
2771, 1300, 52, 0, 209, 262, 1727, 0, 1466, 2285, 5, 0, 0, 7, 
1956, 0, 0, 9, 6004, 0, 0, 328, 0, 4, 5, 3852, 24829, 139, 6, 
10430, 454, 11, 0, 80, 1507, 3449, 3524, 514, 4097, 0, 3882, 
2, 861, 1906, 566, 0, 0, 0, 0, 193, 3273, 1450, 40, 0, 470, 353, 
2364, 0, 1627, 2628, 3, 0, 0, 4, 2066, 1, 0, 10, 4016, 0, 1, 
217, 0, 3, 0, 2685, 16201, 137, 7, 7764, 315, 5, 0, 54, 989, 
2412, 2611, 377, 2972, 0, 2820, 1, 615, 1224, 398, 0, 2, 0, 0, 
146, 2421, 992, 42, 0, 400, 219, 1523, 0, 1131, 1909, 3, 0, 0, 
5, 1409), .Dim = c(50L, 23L), .Dimnames = list(c("Pydc3", "Ceacam5", 
"Mir93", "Idh1", "Gm10872", "C4bp-ps1", "Mrps33", "LOC432562", 
"March1", "Rbm44", "Npc1", "Rpl8", "Nckap1l", "H2-Eb1", "Ghitm", 
"Rabl5", "2700089I24Rik", "Vmn2r38", "Dpysl4", "Map2k3", "Tsc1", 
"Kbtbd2", "Slc5a6", "Erbb2", "Olfr1104", "Tmem65", "Gpr142", 
"Scube3", "B3gnt1", "A430033K04Rik", "Skint9", "4933411E08Rik", 
"Olfr424", "Mir139", "Pcdhga4", "Cdc123", "Dpy19l3", "Ticam2", 
"4930480K15Rik", "Igf1", "Slc41a3", "Uck2", "Guca1b", "Ppp6r2", 
"Rab22a", "Csf2rb2", "Vmn1r72", "Vmn1r95", "Zap70", "Uqcc"), 
c("IM_MR28_S28_L001", "IM_MR29_S29_L001", "IM_MR30_S30_L001", 
"IM_MR31_S31_L001", "IM_MR32_S32_L001", "IM_MR33_S33_L001", 
"IM_MR34_S34_L001", "IM_MR35_S35_L001", "IM_MR36_S36_L001", 
"IM_AR_36", "IM_AR_37", "IM_AR_38", "IM_AR_39", "IM_AR_40", 
"IM_AR_41", "IM_AR51_S1_L006", "IM_AR52_S2_L006", "IM_AR53_S3_L006", 
"IM_AR54_S4_L006", "IM_AR55_S5_L006", "IM_AR56_S6_L006", 
"IM_AR57_S7_L006", "IM_AR58_S8_L006")))

cd <- structure(list(batch = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L
), .Label = c("190701_K00242_0579_AH7GFLBBXY", "180810_K00242_0453_AHVJTJBBXX_IM_AR_RS21_180814_K00242_0456_AHW5LYBBXX_IM_AR_RS21_180817_K00242_0458_AHW57TBBXX_IM_AR_RS21", 
"180406_K00242_0385_AHTCCHBBXX_IM_AR_RS8_180412_K00242_0388_AHT7NYBBXX_IM_AR_RS8", 
"180814_K00242_0456_AHW5LYBBXX_IM_AR_RS21_180814_K00242_0456_AHW5LYBBXX_IM_AR_RS21_180817_K00242_0458_AHW57TBBXX_IM_AR_RS21", 
"190322_K00242_0534_AHYLVWBBXX_IM_AM_RS8_dT"), class = "factor"), 
time_label = c("D8", "D8", "D8", "D10", "D10", "D10", "D15", 
"D15", "D15", "D8", "D8", "D8", "D8", "D8", "D8", "D11", 
"D11", "D11", "D11", "D11", "D11", "D11", "D11"), time_value = c(8L, 
8L, 8L, 10L, 10L, 10L, 15L, 15L, 15L, 8L, 8L, 8L, 8L, 8L, 
8L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L), user = c("MR", 
"MR", "MR", "MR", "MR", "MR", "MR", "MR", "MR", "AR", "AR", 
"AR", "AR", "AR", "AR", "AR", "AR", "AR", "AR", "AR", "AR", 
"AR", "AR"), treatment = structure(c(1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L), .Label = c("ctrl", "OE"), class = "factor"), 
group = structure(c(10L, 10L, 10L, 11L, 11L, 11L, 12L, 12L, 
12L, 17L, 17L, 17L, 18L, 18L, 18L, 19L, 19L, 19L, 19L, 20L, 
20L, 20L, 20L), .Label = c("M_2i_ctrl", "M_D0_ctrl", "M_D1_ctrl", 
"M_D2_ctrl", "M_D3_ctrl", "M_D4_ctrl", "M_D5_ctrl", "M_D6_ctrl", 
"M_D7_ctrl", "M_D8_ctrl", "M_D10_ctrl", "M_D15_ctrl", "A_D6_OE", 
"A_D6_ctrl", "A_D7_ctrl", "A_D7_OE", "A_D8_ctrl", "A_D8_OE", 
"A_D11_ctrl", "A_D11_OE"), class = "factor"), group_pca_label = c("M_D8_ctrl", 
NA, NA, "M_D10_ctrl", NA, NA, "M_D15_ctrl", NA, NA, "A_D8_ctrl", 
NA, NA, "A_D8_OE", NA, NA, "A_D11_ctrl", NA, NA, NA, "A_D11_OE", 
NA, NA, NA), condition = structure(c(10L, 10L, 10L, 11L, 
11L, 11L, 12L, 12L, 12L, 10L, 10L, 10L, 15L, 15L, 15L, 16L, 
16L, 16L, 16L, 17L, 17L, 17L, 17L), .Label = c("2i_ctrl", 
"D0_ctrl", "D1_ctrl", "D2_ctrl", "D3_ctrl", "D4_ctrl", "D5_ctrl", 
"D6_ctrl", "D7_ctrl", "D8_ctrl", "D10_ctrl", "D15_ctrl", 
"D6_OE", "D7_OE", "D8_OE", "D11_ctrl", "D11_OE"), class = "factor"), 
time = structure(c(10L, 10L, 10L, 11L, 11L, 11L, 13L, 13L, 
13L, 10L, 10L, 10L, 10L, 10L, 10L, 12L, 12L, 12L, 12L, 12L, 
12L, 12L, 12L), .Label = c("2i", "D0", "D1", "D2", "D3", 
"D4", "D5", "D6", "D7", "D8", "D10", "D11", "D15"), class = "factor"), 
sample = structure(1:23, .Label = c("IM_MR28_S28_L001", "IM_MR29_S29_L001", 
"IM_MR30_S30_L001", "IM_MR31_S31_L001", "IM_MR32_S32_L001", 
"IM_MR33_S33_L001", "IM_MR34_S34_L001", "IM_MR35_S35_L001", 
"IM_MR36_S36_L001", "IM_AR_36", "IM_AR_37", "IM_AR_38", "IM_AR_39", 
"IM_AR_40", "IM_AR_41", "IM_AR51_S1_L006", "IM_AR52_S2_L006", 
"IM_AR53_S3_L006", "IM_AR54_S4_L006", "IM_AR55_S5_L006", 
"IM_AR56_S6_L006", "IM_AR57_S7_L006", "IM_AR58_S8_L006"), class = "factor")), row.names = c("IM_MR28_S28_L001", 
"IM_MR29_S29_L001", "IM_MR30_S30_L001", "IM_MR31_S31_L001", "IM_MR32_S32_L001", 
"IM_MR33_S33_L001", "IM_MR34_S34_L001", "IM_MR35_S35_L001", "IM_MR36_S36_L001", 
"IM_AR_36", "IM_AR_37", "IM_AR_38", "IM_AR_39", "IM_AR_40", "IM_AR_41", 
"IM_AR51_S1_L006", "IM_AR52_S2_L006", "IM_AR53_S3_L006", "IM_AR54_S4_L006", 
"IM_AR55_S5_L006", "IM_AR56_S6_L006", "IM_AR57_S7_L006", "IM_AR58_S8_L006"
), class = "data.frame")

long <- counts %>% 
  as.data.frame() %>% 
  tidyr::pivot_longer(
    cols = everything(), 
    names_to = "sample", 
    values_to = "count"
  ) %>% 
  dplyr::left_join(cd, by = "sample")
long$sample <- factor(long$sample, levels = levels(cd$sample))

size_stroke <- 2
outline_treatment <- "OE"

long %>% 
  dplyr::arrange(time_value, treatment) %>%
  dplyr::mutate(group = factor(group, levels = unique(group))) %>% 
  dplyr::mutate(stroke = dplyr::case_when(
    treatment == outline_treatment ~ size_stroke,
    TRUE ~ 0
  )) %>%
  ggplot2::ggplot(ggplot2::aes(x = group, y = count, fill = batch)) + 
  ggplot2::geom_boxplot(ggplot2::aes(lwd = stroke)) +
  ggplot2::scale_y_log10(limits = c(0.1, 1E10)) + 
  ggplot2::theme_bw() + 
  ggplot2::theme(
    axis.text.x = ggplot2::element_text(angle = 90, hjust = 1),
    legend.position = "none"
  ) + 
  ggplot2::labs(title = nm_dds)

Read more here: Source link