我正在嘗試創建一個不同受試者劑量隨時間變化的泳道圖。當我運行我的代碼時,條形圖按劑量堆疊。我的問題是受試者劑量不同,他們可能有 5, 10, 5 在我的情節中 5 堆疊在一起。但我希望隨著時間的推移而代表它們。在我的資料集中,我有每個患者服用劑量的時間量,按他們服用劑量時的順序排列。我想要通過排序變數“p”堆疊的條形圖,它是數字是 1、2、3、4、5、6 等,訪問物件的劑量是多少。
ggplot(dataset,aes(x=diff 1, y=subject))
geom_bar(stat="identity", aes(fill=as.factor(EXDOSE)))
scale_fill_manual(values = dosecol, name="Actual Dose in mg")
我想要由我的變數“p”而不是填充堆疊的條形圖
我試過 forcats 但這不起作用。不確定如何處理,資料集中的資料由每個主題的 p 排列
示例資料
dataset <- data.frame(subject = c("1002", "1002", "1002", "1002", "1034","1034","1034","1034"),
exdose = c(5,10,20,5,5,10,20,20),
p= c(1,2,3,4,1,2,3,4),
diff = c(3,3,9,7,3,3,4,5)
)
ggplot(dataset,aes(x=diff 1, y=subject))
geom_bar(stat="identity", aes(fill=as.factor(exdose)),position ="stack")
scale_fill_manual(values = dosecol, name="Actual Dose in mg")
uj5u.com熱心網友回復:
如果您想訂購堆疊條形圖,您必須通過在美學上進行映射p來告訴您這樣做。否則會做出猜測,默認情況下是基于映射到任何美學上的分類變數,即在你的情況下是aes:ggplot2pgroupggplot2fill
注意:我放棄了,scale_fill_manual因為您沒有提供顏色矢量。但這對于這個問題并不重要。
library(ggplot2)
ggplot(dataset, aes(x = diff 1, y = subject, group = p))
geom_col(aes(fill = as.factor(exdose)))

編輯為了獲得正確的順序,我們必須顛倒堆疊的順序,這可以通過以下方式實作position_stack(reverse = TRUE):
注意:為了檢查我們是否有正確的順序,我添加了一個geom_text顯示p值。
ggplot(dataset, aes(x = diff 1, y = subject, group = p))
geom_col(aes(fill = as.factor(exdose)), position = position_stack(reverse = TRUE))
geom_text(aes(label = p), position = position_stack(reverse = TRUE))

第二種選擇是轉換p為水平順序以相反順序設定的因子:
ggplot(dataset, aes(x = diff 1, y = subject, group = factor(p, rev(sort(unique(p))))))
geom_col(aes(fill = as.factor(exdose)))
geom_text(aes(label = p), position = "stack")

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529683.html
上一篇:散點圖和其中的集群
下一篇:在條形圖上以百分比水平繪制
