0

I have a dataframe such as :

> head(tab)
  molecule gene  start    end  strand orientation hatch
1  Genome5 genA 405113 407035 forward          -1    NO
2  Genome5 genB 407035 407916 forward          -1    NO
3  Genome5 genC 407927 408394 forward          -1    NO
4  Genome5 genD 408387 408737 reverse          -1    NO
5  Genome5 genE 408751 409830 forward           1    NO
6  Genome5 genF 409836 410315 forward          -1    NO

And I can produce the following plot using this script :

library(ggplot2)
library(gggenes)
ggplot(example_genes, aes(xmin = start, xmax = end, y = molecule, fill = gene)) +
  geom_gene_arrow() +
  facet_wrap(~ molecule, scales = "free", ncol = 1) +
  scale_fill_brewer(palette = "Set3")

enter image description here

And I would like simply to add hatchs on genes containing hatch=="YES" within the tab$hatch column in the tab

And then get the following result ;

enter image description here

Here is the dput format of the table :

structure(list(molecule = c("Genome5", "Genome5", "Genome5", 
"Genome5", "Genome5", "Genome5", "Genome5", "Genome5", "Genome5", 
"Genome5", "Genome3", "Genome3", "Genome3", "Genome3", "Genome3", 
"Genome3", "Genome3", "Genome3", "Genome4", "Genome4", "Genome4", 
"Genome4", "Genome4", "Genome4", "Genome2", "Genome2", "Genome2", 
"Genome2", "Genome2", "Genome2", "Genome2", "Genome2", "Genome1", 
"Genome1", "Genome1", "Genome1", "Genome1", "Genome1", "Genome1", 
"Genome1", "Genome1", "Genome1", "Genome6", "Genome6", "Genome6", 
"Genome6", "Genome6", "Genome6", "Genome6", "Genome6", "Genome7", 
"Genome7", "Genome7", "Genome7", "Genome7", "Genome7", "Genome7", 
"Genome7", "Genome7", "Genome7", "Genome7", "Genome8", "Genome8", 
"Genome8", "Genome8", "Genome8", "Genome8", "Genome8", "Genome8", 
"Genome8", "Genome8", "Genome8"), gene = c("genA", "genB", "genC", 
"genD", "genE", "genF", "protF", "protC", "protD", "protE", "genA", 
"genB", "genC", "genD", "genE", "genF", "protA", "protB", "genA", 
"genB", "genC", "genD", "genE", "genF", "genA", "genB", "genC", 
"genD", "genE", "genF", "protA", "protB", "genA", "genB", "genC", 
"genD", "genE", "genF", "protF", "protC", "protD", "protE", "genA", 
"genB", "genC", "genD", "genE", "genF", "protA", "protB", "genB", 
"genC", "genD", "genE", "genF", "protA", "protB", "protF", "protC", 
"protD", "protE", "genB", "genC", "genD", "genE", "genF", "protA", 
"protB", "protF", "protC", "protD", "protE"), start = c(405113, 
407035, 407927, 408387, 408751, 409836, 410335, 412621, 412830, 
413867, -67849, -65867, -64997, -64507, -64127, -63011, -62550, 
-62187, -47353, -45431, -44522, -44070, -43701, -42614, 8345, 
10327, 11394, 11878, 12258, 13365, 13726, 14260, 15389, 17301, 
18176, 18641, 18999, 20086, 20474, 22777, 22986, 24024, 65751, 
67698, 68605, 69128, 69501, 70614, 71008, 71375, -9390, -8984, 
-8500, -8130, -7019, -6662, -6306, -5695, -3446, -3188, -2116, 
2, 413, 898, 1268, 2376, 2733, 3089, 3700, 5949, 6217, 7307), 
    end = c(407035, 407916, 408394, 408737, 409830, 410315, 412596, 
    412833, 413870, 414850, -65864, -65013, -64548, -64127, -63048, 
    -62640, -62209, -61549, -45443, -44571, -44070, -43723, -42625, 
    -42201, 10330, 11181, 11843, 12255, 13337, 13733, 14067, 
    14919, 17299, 18161, 18640, 18985, 20078, 20451, 22720, 22989, 
    24023, 25010, 67691, 68570, 69135, 69511, 70583, 71015, 71349, 
    72034, -8992, -8511, -8123, -7048, -6663, -6321, -5653, -3449, 
    -3207, -2136, -1127, 406, 886, 1275, 2350, 2732, 3074, 3742, 
    5946, 6182, 7269, 8296), strand = c("forward", "forward", 
    "forward", "reverse", "forward", "forward", "reverse", "forward", 
    "forward", "forward", "reverse", "reverse", "reverse", "forward", 
    "reverse", "reverse", "reverse", "reverse", "reverse", "reverse", 
    "forward", "reverse", "forward", "forward", "forward", "forward", 
    "forward", "forward", "forward", "reverse", "forward", "reverse", 
    "reverse", "forward", "reverse", "forward", "reverse", "forward", 
    "forward", "forward", "forward", "forward", "forward", "forward", 
    "reverse", "forward", "reverse", "forward", "forward", "forward", 
    "reverse", "forward", "reverse", "reverse", "forward", "reverse", 
    "forward", "forward", "reverse", "reverse", "forward", "forward", 
    "forward", "forward", "forward", "forward", "reverse", "forward", 
    "forward", "reverse", "reverse", "reverse"), orientation = c(-1, 
    -1, -1, -1, 1, -1, 1, 1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 
    -1, 1, 1, 1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, 
    1, -1, 1, 1, -1, 1, -1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 
    1, -1, -1, -1, -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, -1, -1, -1, 
    -1, -1, 1, 1, -1), hatch = c("NO", "NO", "NO", "NO", "NO", 
    "NO", "NO", "NO", "NO", "NO", "YES", "NO", "NO", "NO", "NO", 
    "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", 
    "NO", "NO", "NO", "NO", "NO", "NO", "NO", "YES", "NO", "NO", 
    "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", 
    "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", 
    "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", "NO", 
    "NO", "NO", "NO", "NO", "NO", "NO", "NO")), row.names = c(NA, 
-72L), class = "data.frame")
chippycentra
  • 3,396
  • 1
  • 6
  • 24
  • I don't think the gggenes/ggpattern packages work together well enough to enable an easy way to do this. I'd recommend to manually construct arrow polygons and then use `ggpattern::geom_polygon_pattern()` to draw them. – teunbrand Oct 17 '22 at 13:17

0 Answers0