2

I'm looking for a way to place my dunn's test results on my ggplot:

  • either directly by somehow implementing the necessary code lines on the plot regarding the results of the dunn test

  • or indirectly by placing just the letters regarding significance by the order in which i know they appear

In the example graphic I attached, I put in the letters myself through a 2nd party drawing software, to give you an idea of what I'm looking for - ideally i would want the lower case letters to represent significant differences only within the same variable called "type" but a different "day" and capitals for the opposite. I do however recognize this is a tall order, and would be happy with just the differences within the same type. example

here is my dput and str:

> dput(table5)
structure(list(day = c("day 00", "day 00", "day 00", "day 00", 
"day 00", "day 00", "day 00", "day 00", "day 07", "day 07", "day 07", 
"day 07", "day 07", "day 07", "day 07", "day 07", "day 14", "day 14", 
"day 14", "day 14", "day 14", "day 14", "day 14", "day 14", "day 21", 
"day 21", "day 21", "day 21", "day 21", "day 21", "day 21", "day 21", 
"day 28", "day 28", "day 28", "day 28", "day 28", "day 28", "day 28", 
"day 28", "day 00", "day 00", "day 00", "day 00", "day 00", "day 00", 
"day 00", "day 00", "day 07", "day 07", "day 07", "day 07", "day 07", 
"day 07", "day 07", "day 07", "day 14", "day 14", "day 14", "day 14", 
"day 14", "day 14", "day 14", "day 14", "day 21", "day 21", "day 21", 
"day 21", "day 21", "day 21", "day 21", "day 21", "day 28", "day 28", 
"day 28", "day 28", "day 28", "day 28", "day 28", "day 28", "day 00", 
"day 00", "day 00", "day 00", "day 00", "day 00", "day 00", "day 00", 
"day 07", "day 07", "day 07", "day 07", "day 07", "day 07", "day 07", 
"day 07", "day 14", "day 14", "day 14", "day 14", "day 14", "day 14", 
"day 14", "day 14", "day 21", "day 21", "day 21", "day 21", "day 21", 
"day 21", "day 21", "day 21", "day 28", "day 28", "day 28", "day 28", 
"day 28", "day 28", "day 28", "day 28", "day 00", "day 00", "day 00", 
"day 00", "day 00", "day 00", "day 00", "day 00", "day 07", "day 07", 
"day 07", "day 07", "day 07", "day 07", "day 07", "day 07", "day 14", 
"day 14", "day 14", "day 14", "day 14", "day 14", "day 14", "day 14", 
"day 21", "day 21", "day 21", "day 21", "day 21", "day 21", "day 21", 
"day 21", "day 28", "day 28", "day 28", "day 28", "day 28", "day 28", 
"day 28", "day 28", "day 00", "day 00", "day 00", "day 00", "day 00", 
"day 00", "day 00", "day 00", "day 07", "day 07", "day 07", "day 07", 
"day 07", "day 07", "day 07", "day 07", "day 14", "day 14", "day 14", 
"day 14", "day 14", "day 14", "day 14", "day 14", "day 21", "day 21", 
"day 21", "day 21", "day 21", "day 21", "day 21", "day 21", "day 28", 
"day 28", "day 28", "day 28", "day 28", "day 28", "day 28", "day 28", 
"day 00", "day 00", "day 00", "day 00", "day 00", "day 00", "day 00", 
"day 00", "day 07", "day 07", "day 07", "day 07", "day 07", "day 07", 
"day 07", "day 07", "day 14", "day 14", "day 14", "day 14", "day 14", 
"day 14", "day 14", "day 14", "day 21", "day 21", "day 21", "day 21", 
"day 21", "day 21", "day 21", "day 21", "day 28", "day 28", "day 28", 
"day 28", "day 28", "day 28", "day 28", "day 28", "day 00", "day 00", 
"day 00", "day 00", "day 00", "day 00", "day 00", "day 00", "day 07", 
"day 07", "day 07", "day 07", "day 07", "day 07", "day 07", "day 07", 
"day 14", "day 14", "day 14", "day 14", "day 14", "day 14", "day 14", 
"day 14", "day 21", "day 21", "day 21", "day 21", "day 21", "day 21", 
"day 21", "day 21", "day 28", "day 28", "day 28", "day 28", "day 28", 
"day 28", "day 28", "day 28"), type = c("control", "control", 
"control", "control", "control", "control", "control", "control", 
"control", "control", "control", "control", "control", "control", 
"control", "control", "control", "control", "control", "control", 
"control", "control", "control", "control", "control", "control", 
"control", "control", "control", "control", "control", "control", 
"control", "control", "control", "control", "control", "control", 
"control", "control", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", 
"nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", 
"nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", 
"nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", 
"nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", 
"nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", "nZn1_", 
"nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", 
"nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", 
"nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", 
"nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", 
"nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", 
"nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn10_", "nZn100_", 
"nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", 
"nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", 
"nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", 
"nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", 
"nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", 
"nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", "nZn100_", 
"nZn100_", "nZn100_", "nZn100_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", 
"Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", 
"Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", 
"Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", 
"Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn1_", 
"Zn1_", "Zn1_", "Zn1_", "Zn1_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", 
"Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", 
"Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", 
"Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", 
"Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", 
"Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", "Zn10_", 
"Zn10_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", 
"Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", 
"Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", 
"Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", 
"Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", 
"Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_", "Zn100_"), 
    TAC = c(0.0134723395589115, 0.0161888871061509, 0.0146337654145718, 
    0.0153067871292595, 0.012800314735395, 0.0160841665978896, 
    0.0140621616691814, 0.0135425580967982, 0.0132198270328205, 
    0.0138496077219653, 0.0135775493518084, 0.0126333962864469, 
    0.0164821881641534, 0.0132516331108305, 0.0157791571175251, 
    0.0129960024291699, 0.0146323678504021, 0.0134451215151322, 
    0.0143262838325461, 0.0153573779185249, 0.0139773746147923, 
    0.0159350865128266, 0.0156720782857077, 0.0155096081292032, 
    0.013476349735956, 0.0140104181996115, 0.0129878390010014, 
    0.0147239859165112, 0.015160930718777, 0.0148955399340424, 
    0.013274378116328, 0.0153663044374496, 0.0145472559523844, 
    0.0132898660703847, 0.0139871399975842, 0.0124985111701027, 
    0.0149240276338179, 0.0129573902698069, 0.0147729343794709, 
    0.0128674264777598, 0.0147815872982594, 0.0139767796824041, 
    0.0144185398405766, 0.0155799146991459, 0.0135417909851351, 
    0.015988596586438, 0.0139603963976125, 0.0126397298299191, 
    0.013297964384596, 0.012347536157165, 0.0152573470818857, 
    0.0136566619097667, 0.0125192707022401, 0.0141156296691061, 
    0.0139603724286662, 0.0141388938152221, 0.0127749097766803, 
    0.0142082519110294, 0.0149398326676766, 0.0143207529313558, 
    0.0144381103787128, 0.0149147414885484, 0.0139224295866318, 
    0.0161358891403436, 0.0151690152511571, 0.0120945286936824, 
    0.0153132383654698, 0.0131770823852777, 0.0136750345235747, 
    0.0129352436377984, 0.0162120454010317, 0.0155409171425954, 
    0.0135940425474181, 0.0142951343511937, 0.0143779323175896, 
    0.0136891451722703, 0.0140286347004686, 0.0122667606250391, 
    0.0152446224172418, 0.013442306549535, 0.0129068996979612, 
    0.0147404146947943, 0.013688825582269, 0.0130193063055386, 
    0.01285971255513, 0.0151660181611206, 0.0138280467330508, 
    0.0135147736966651, 0.0158580706409006, 0.0149366602534351, 
    0.0106554950909403, 0.0179654260106192, 0.0120425346368713, 
    0.0145387164119486, 0.0139546280207597, 0.0121871897075845, 
    0.0150418870034593, 0.0148117380734173, 0.0139690179111281, 
    0.0170751257982307, 0.0129661477952429, 0.0144612227917873, 
    0.0146065893466387, 0.0126241343210384, 0.0170751257982307, 
    0.0130964557093226, 0.0134570968344701, 0.0165480203562944, 
    0.0151921149184481, 0.0130666062376204, 0.012722050697886, 
    0.0155582048904096, 0.0125288074742436, 0.016985639190516, 
    0.0176528351294189, 0.0138432089287227, 0.013890319218671, 
    0.017035215335001, 0.0168839977227436, 0.0133203267470888, 
    0.013892777179513, 0.0155216139064973, 0.0130076218759369, 
    0.013903958340264, 0.0135000204009635, 0.0148519977852621, 
    0.0153029154169557, 0.0141832966293512, 0.0176005510379328, 
    0.0180687740940438, 0.0177789446952697, 0.0182099087520794, 
    0.0184723827329167, 0.022483746075728, 0.0196648164641345, 
    0.0170131886149416, 0.0215058343136062, 0.0211259597744559, 
    0.0196373761289472, 0.0206737739206, 0.020532594441278, 0.0193494766153245, 
    0.0211617300063814, 0.0213333413267872, 0.0202163436360403, 
    0.0236752367085596, 0.0231873026647459, 0.0228522660496144, 
    0.0238366734630018, 0.0264524093818515, 0.0268093919646026, 
    0.0252668406573153, 0.0258403852690662, 0.0223986018317785, 
    0.0272147558779617, 0.0225116847733454, 0.0247724813762193, 
    0.022691182948792, 0.0235805783268122, 0.0270689051186104, 
    0.0126334908832258, 0.0164665820507107, 0.0129386884401034, 
    0.0119158011756844, 0.0130928729787235, 0.0149940706645974, 
    0.0129535502638655, 0.0162831996423606, 0.0176755444192191, 
    0.0161755659998132, 0.0174173101524856, 0.0155714069341957, 
    0.01433383826834, 0.0143819293817603, 0.0185494616259894, 
    0.0140319779691521, 0.0144114680062016, 0.0174497227904159, 
    0.0180907703704672, 0.0157478259355293, 0.0158958906812569, 
    0.0147163839619763, 0.0146701443994308, 0.0180369287296324, 
    0.0149336258279806, 0.0186097801562105, 0.0137231521985133, 
    0.0153650910635747, 0.0138998273293687, 0.0155199902217533, 
    0.0163903022171882, 0.015754928008943, 0.0171808546793322, 
    0.0154244829039175, 0.0134954450270778, 0.0147187179502944, 
    0.0160939056001929, 0.0145497150558122, 0.0154571534643691, 
    0.015511148172344, 0.0132885919777709, 0.0138910418368534, 
    0.0152496449072613, 0.0132820365830201, 0.013480084079182, 
    0.016683045565325, 0.0176337406920335, 0.0151657804062655, 
    0.0125455114843902, 0.0118102856445592, 0.0116410665300014, 
    0.0146556231989517, 0.014464999427952, 0.0121229802720933, 
    0.0146834533301593, 0.0121645122630423, 0.0136816673389857, 
    0.0135984961089614, 0.0164906141382343, 0.0149265724276527, 
    0.0163311308492402, 0.017967595623527, 0.0143263172313383, 
    0.0145117513172078, 0.0149694356038913, 0.0136478358101476, 
    0.0148523043836901, 0.0140267859486034, 0.0136857372651645, 
    0.0161384954212, 0.0171836598216303, 0.0165288287203719, 
    0.0163703032374203, 0.0149628937118673, 0.0167639896711626, 
    0.0144140290861155, 0.0164700832677882, 0.017097353142466, 
    0.0177233791174971, 0.016410406871025, 0.0145656397252108, 
    0.0127795571441824, 0.0139787766512734, 0.0145603577832239, 
    0.0130325210010334, 0.0157142193796273, 0.0165295708322065, 
    0.0154878492755022, 0.0176888974165639, 0.0186435561581489, 
    0.0177330425080685, 0.0182856446463086, 0.0219973970170363, 
    0.0217533371623466, 0.0176290655250839, 0.0202192044566584, 
    0.01917805317661, 0.0186277616395779, 0.0170154664932417, 
    0.0195884686724334, 0.0201420675026667, 0.0183148068985733, 
    0.020836323932372, 0.0207067552945439, 0.018534989031893, 
    0.019680916901509, 0.0219673944081694, 0.0236890701508884, 
    0.0235543150426157, 0.0234233849979097, 0.0210565415662947, 
    0.0232511101944444, 0.0227186732866978, 0.0225332903957415, 
    0.0234773944195847, 0.0229988542468931, 0.022618525386521, 
    0.0197686090869307, 0.0186686467858637, 0.0189525178016395
    ), conditions = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 
    7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 
    9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 11L, 
    11L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 12L, 12L, 12L, 12L, 
    12L, 12L, 12L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 14L, 
    14L, 14L, 14L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 15L, 15L, 
    15L, 15L, 15L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 16L, 17L, 
    17L, 17L, 17L, 17L, 17L, 17L, 17L, 18L, 18L, 18L, 18L, 18L, 
    18L, 18L, 18L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 20L, 
    20L, 20L, 20L, 20L, 20L, 20L, 20L, 21L, 21L, 21L, 21L, 21L, 
    21L, 21L, 21L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 23L, 
    23L, 23L, 23L, 23L, 23L, 23L, 23L, 24L, 24L, 24L, 24L, 24L, 
    24L, 24L, 24L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 26L, 
    26L, 26L, 26L, 26L, 26L, 26L, 26L, 27L, 27L, 27L, 27L, 27L, 
    27L, 27L, 27L, 28L, 28L, 28L, 28L, 28L, 28L, 28L, 28L, 29L, 
    29L, 29L, 29L, 29L, 29L, 29L, 29L, 30L, 30L, 30L, 30L, 30L, 
    30L, 30L, 30L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 32L, 
    32L, 32L, 32L, 32L, 32L, 32L, 32L, 33L, 33L, 33L, 33L, 33L, 
    33L, 33L, 33L, 34L, 34L, 34L, 34L, 34L, 34L, 34L, 34L, 35L, 
    35L, 35L, 35L, 35L, 35L, 35L, 35L), levels = c("controlday 00", 
    "controlday 07", "controlday 14", "controlday 21", "controlday 28", 
    "nZn1_day 00", "nZn1_day 07", "nZn1_day 14", "nZn1_day 21", 
    "nZn1_day 28", "nZn10_day 00", "nZn10_day 07", "nZn10_day 14", 
    "nZn10_day 21", "nZn10_day 28", "nZn100_day 00", "nZn100_day 07", 
    "nZn100_day 14", "nZn100_day 21", "nZn100_day 28", "Zn1_day 00", 
    "Zn1_day 07", "Zn1_day 14", "Zn1_day 21", "Zn1_day 28", "Zn10_day 00", 
    "Zn10_day 07", "Zn10_day 14", "Zn10_day 21", "Zn10_day 28", 
    "Zn100_day 00", "Zn100_day 07", "Zn100_day 14", "Zn100_day 21", 
    "Zn100_day 28"), class = "factor")), class = "data.frame", row.names = c(NA, 
-280L))
> str(table5)
'data.frame':   280 obs. of  4 variables:
 $ day       : chr  "day 00" "day 00" "day 00" "day 00" ...
 $ type      : chr  "control" "control" "control" "control" ...
 $ TAC       : num  0.0135 0.0162 0.0146 0.0153 0.0128 ...
 $ conditions: Factor w/ 35 levels "controlday 00",..: 1 1 1 1 1 1 1 1 2 2 ...

and my ggplot plus dunn codes:

library(plotrix)
library(ggplot2)

aa <- aggregate(CAT ~ day + type, data=table5, FUN=mean)
bb <- aggregate(CAT ~ day + type, data=table5, FUN=sd)
ee <- aggregate(CAT ~ day + type, data=table5, FUN=std.error)  
cc <- merge(aa, ee, by=c("day", "type"))
colnames(cc)[3:4] <- c("mean", "se")


ggplot(cc, aes(x = type, y = mean, fill = day))+
  geom_bar(stat="identity", position= "dodge") + 
  scale_fill_brewer(palette="Paired")+
  theme_minimal() +
  labs(x="", y="ratio", title = "CAT") +
  theme(panel.background = element_blank(),
        axis.line = element_line(colour = "black"),
        panel.grid=element_blank(),
        plot.title = element_text(size=40, hjust = 0),
        legend.text = element_text(size=30), 
        legend.title = element_text(size=32),
        axis.title.x = element_text(size = 36),
        axis.text.x = element_text(size = 34),
        axis.title.y = element_text(size = 36),
        axis.text.y = element_text(size = 28)
  ) +
  geom_errorbar(aes(ymin = mean-se,
                    ymax = mean+se), 
                position = "dodge")
library(dunn.test)
dunn.test(table5$CAT, table5$conditions, method = "bh")

All my thanks for any help provided.

Roma JC
  • 57
  • 5
  • 1
    This is two (or more) layers of problems in one question. As for labeling significant differences, this is effectively solved with one of https://stackoverflow.com/q/12018499/3358272, https://stackoverflow.com/q/6455088/3358272, and https://stackoverflow.com/q/74636143/3358272. The real question is how to determine the the labels are to place over each error-bar, and _that_ is more about computation (and not about `ggplot2`). I hope those links give you the insight you need; if not, I suggest you ask about calculating the labels first (and separately). – r2evans Feb 17 '23 at 16:41
  • 1
    yes, I knew this was likely somewhat of a tall ask from what I've seen around here, especially since I'm using error bars, but those links will definitely be a big help - so thank you for them! – Roma JC Feb 19 '23 at 07:55

0 Answers0