這是我的資料集-
df<- data.frame(Comparison=c("Control vs SA","Control vs SA","Control vs SA","Control vs SA","Control vs SA","Control vs SA","Control vs SA","Control vs SA","Control vs SA","Control vs SA",
"SA3MA vs SA","SA3MA vs SA","SA3MA vs SA","SA3MA vs SA","SA3MA vs SA","SA3MA vs SA","SA3MA vs SA","SA3MA vs SA","SA3MA vs SA","SA3MA vs SA",
"Control vs HS","Control vs HS","Control vs HS","Control vs HS","Control vs HS","Control vs HS","Control vs HS","Control vs HS","Control vs HS","Control vs HS",
"HSLC vs HS","HSLC vs HS","HSLC vs HS","HSLC vs HS","HSLC vs HS","HSLC vs HS","HSLC vs HS","HSLC vs HS","HSLC vs HS","HSLC vs HS"),
LFC_Band=c(-4,-2,-1,-0.5,-0.25,0.25,0.5,1,2,4,
-4,-2,-1,-0.5,-0.25,0.25,0.5,1,2,4,
-4,-2,-1,-0.5,-0.25,0.25,0.5,1,2,4,
-4,-2,-1,-0.5,-0.25,0.25,0.5,1,2,4),
Number_of_Genes=c(-36,-540,-2198,-3025,-6002,6517,3462,2466, 500,1,-620,-2317,-3318,-2748,-2264,2706,2046,3079,3013,2073,-119,-606,
-1640,-2886,-7451,6944,3147,1592, 267,0,26,0,0, -44,-901 -11699,10969, 754,0,12,0))
我想要做的是使用 ggplot 創建一個堆疊條形圖。
chart_x <- ggplot(data = df, aes(y=(Number_of_Genes),
x=Comparison, group = Comparison))
geom_col(aes(fill=(as.factor(LFC_Band))))
scale_fill_brewer(palette = "Spectral")
chart_x
結果是——

但是如果你看到下半部分基本上是翻轉的。上半部分是正確的,從 4 到 0.25,而下半部分從 -4 開始。有沒有辦法翻轉下半部分,使其從 -0.25 開始?總之,我想要的是——

我使用 MS Paint 來創建它只是為了展示我正在尋找的東西。
我嘗試了其他方法,將資料分成兩部分,但效果不佳。任何幫助深表感謝。:)
uj5u.com熱心網友回復:
您是否正在尋找這樣的解決方案?
library(tidyverse)
df1 <- df %>%
filter(Number_of_Genes>=0)
df2 <- df %>%
filter(Number_of_Genes<0)
ggplot()
geom_bar(data = df2, aes(x=Comparison, y=Number_of_Genes, group = Comparison, fill=factor(LFC_Band)),stat = "identity")
geom_bar(data = df1, aes(x=Comparison, y=Number_of_Genes, group = Comparison, fill=factor(LFC_Band)),stat = "identity")
scale_fill_brewer(palette = "Spectral")

uj5u.com熱心網友回復:
實作您想要的結果的一種選擇是:
LFC_Band在將資料傳遞給 ggplot 之前轉換為一個因子(否則我們會丟失圖例中類別的順序)- 洗掉
group=Comparison以便堆疊按以下方式分組fill= LFC_Band - 使用兩個 geom_col,一個為正值,一個為負值。
- 反轉正值的堆疊順序
- 添加
drop=FALSE到scale_fill_brewer否則就失去圖例中的類別的順序)
另外我顛倒了填充圖例,但如果你愿意,你可以放棄它
library(ggplot2)
df$LFC_Band <- factor(df$LFC_Band)
ggplot(data = df, aes(x = Comparison, y = Number_of_Genes, fill = LFC_Band))
geom_col(data = df[df$Number_of_Genes > 0, ], position = position_stack(reverse = TRUE))
geom_col(data = df[df$Number_of_Genes < 0, ])
scale_fill_brewer(palette = "Spectral", drop = FALSE, guide = guide_legend(reverse = TRUE))

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/360783.html
上一篇:希望單選按鈕onClickYES選項顯示第一個div"#current_school_details"并且沒有選項顯示第二個div"#current_school_det
