library(ggplot2)
library(dplyr)
library(tidyverse)
library(tidyverse)

vals <- c(6,3,9,8,1,4,4,5,2,6)
directions <- c(rep("up", 3), rep("down", 2), rep("up", 2), rep("down", 3))
genes <- c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")
df1 <- tibble(genes, directions, vals)
df1$genes <- factor(df1$genes, levels = letters[1:10], ordered = FALSE)
df1$directions <- factor(df1$directions, levels = c("up", "down"), ordered = FALSE)

# Option 1
p1 <- ggplot(df1) +
  geom_col(aes(x = genes, y = vals, fill = directions)) +
  ggtitle("Option 1")
p1

# Option 2
p2 <- p1 +
  facet_wrap(. ~ directions) +
  ggtitle("Option 2")
p2

# Option 3 - Create a new data frame where the signed magnitude corresponds to "directions"
df2 <- df1 %>% mutate(vals = if_else(directions == "up", vals, -1 * vals))
p3 <- ggplot(df2) +
  geom_col(aes(x = genes, y = vals, fill = directions)) +
  ggtitle("Option 3")
p3

# Option 4 - Reorder the "genes" sorted by fold change - using factors
p4 <- ggplot(df2, aes(x = factor(genes, levels = genes[order(vals)]))) +
  geom_col(aes(y = vals, fill = directions)) +
  ggtitle("Option 4")
p4
LS0tCnRpdGxlOiAiREVHIHVwIGFuZCBEb3duIGJhciBwbG90cyBzY3JpcHQiCm91dHB1dDogaHRtbF9ub3RlYm9vawoKLS0tCgoKCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKCnZhbHMgPC0gYyg2LDMsOSw4LDEsNCw0LDUsMiw2KQpkaXJlY3Rpb25zIDwtIGMocmVwKCJ1cCIsIDMpLCByZXAoImRvd24iLCAyKSwgcmVwKCJ1cCIsIDIpLCByZXAoImRvd24iLCAzKSkKZ2VuZXMgPC0gYygiYSIsICJiIiwgImMiLCAiZCIsICJlIiwgImYiLCAiZyIsICJoIiwgImkiLCAiaiIpCmRmMSA8LSB0aWJibGUoZ2VuZXMsIGRpcmVjdGlvbnMsIHZhbHMpCmRmMSRnZW5lcyA8LSBmYWN0b3IoZGYxJGdlbmVzLCBsZXZlbHMgPSBsZXR0ZXJzWzE6MTBdLCBvcmRlcmVkID0gRkFMU0UpCmRmMSRkaXJlY3Rpb25zIDwtIGZhY3RvcihkZjEkZGlyZWN0aW9ucywgbGV2ZWxzID0gYygidXAiLCAiZG93biIpLCBvcmRlcmVkID0gRkFMU0UpCgojIE9wdGlvbiAxCnAxIDwtIGdncGxvdChkZjEpICsKICBnZW9tX2NvbChhZXMoeCA9IGdlbmVzLCB5ID0gdmFscywgZmlsbCA9IGRpcmVjdGlvbnMpKSArCiAgZ2d0aXRsZSgiT3B0aW9uIDEiKQpwMQoKIyBPcHRpb24gMgpwMiA8LSBwMSArCiAgZmFjZXRfd3JhcCguIH4gZGlyZWN0aW9ucykgKwogIGdndGl0bGUoIk9wdGlvbiAyIikKcDIKCiMgT3B0aW9uIDMgLSBDcmVhdGUgYSBuZXcgZGF0YSBmcmFtZSB3aGVyZSB0aGUgc2lnbmVkIG1hZ25pdHVkZSBjb3JyZXNwb25kcyB0byAiZGlyZWN0aW9ucyIKZGYyIDwtIGRmMSAlPiUgbXV0YXRlKHZhbHMgPSBpZl9lbHNlKGRpcmVjdGlvbnMgPT0gInVwIiwgdmFscywgLTEgKiB2YWxzKSkKcDMgPC0gZ2dwbG90KGRmMikgKwogIGdlb21fY29sKGFlcyh4ID0gZ2VuZXMsIHkgPSB2YWxzLCBmaWxsID0gZGlyZWN0aW9ucykpICsKICBnZ3RpdGxlKCJPcHRpb24gMyIpCnAzCgojIE9wdGlvbiA0IC0gUmVvcmRlciB0aGUgImdlbmVzIiBzb3J0ZWQgYnkgZm9sZCBjaGFuZ2UgLSB1c2luZyBmYWN0b3JzCnA0IDwtIGdncGxvdChkZjIsIGFlcyh4ID0gZmFjdG9yKGdlbmVzLCBsZXZlbHMgPSBnZW5lc1tvcmRlcih2YWxzKV0pKSkgKwogIGdlb21fY29sKGFlcyh5ID0gdmFscywgZmlsbCA9IGRpcmVjdGlvbnMpKSArCiAgZ2d0aXRsZSgiT3B0aW9uIDQiKQpwNAoKYGBgCgoKCg==