我想創建一個使用比例填充手動填充圖形顏色的圖形。
G3 <- ggplot(preTMM, aes(Var2, value, fill=group))
geom_boxplot()
Gtheme2
xlab("")
ylab("Log-CPM")
scale_fill_manual(values=c("pCDNA"="grey59","M"= "steelblue3"),
breaks=c("pCDNA","M"))
guides(fill=FALSE)
這作業正常,但如果我想通過之前制作的矢量添加它;
DGEGroup1 <- "pCDNA"
DGEGroup2 <- "M"
DGEGroup1Col <- "grey59"
DGEGroup2Col <- "steelblue3"
它不起作用..我做錯了什么。
G3 <- ggplot(preTMM, aes(Var2, value, fill=group))
geom_boxplot()
Gtheme2
xlab("")
ylab("Log-CPM")
scale_fill_manual(values=c(DGEGroup1=DGEGroup1Col,DGEGroup2=DGEGroup1Col),
breaks=c(DGEGroup1,DGEGroup2))
guides(fill=FALSE)
我想這樣做,如果有意義的話,所有的圖形都可以由一個顏色矢量控制?
提前感謝您的幫助!
uj5u.com熱心網友回復:
命名向量的語法不起作用,因為 R 函式(包括c())不需要引數名稱的引號:
x = "a"
y = "b"
c(x = y)
# x
# "b"
## See how the name is literally `"x"`, not `"a"`
這是一件好事。這意味著x當您還有一個名為 的物件時,具有名為的引數的函式不會中斷x。
出于您的目的,一個很好的解決方法是使用setNames來命名向量。(您也可以使用names(vector) <- ...但setNames讓您將其保留為帶有匿名向量的單線,就像您已經擁有它一樣)。
values = setNames(
c(DGEGroup1Col, DGEGroup2Col),
nm = c(DGEGroup1, DGEGroup2)
)
但是,如果您要為多個繪圖執行此操作,我強烈建議您在代碼的早期提取該向量的定義,這樣您就不會重復此語法。
uj5u.com熱心網友回復:
您沒有提供可重現的示例,但正如 Gregor Thomas 指出的那樣,這不是您在 R 中創建命名向量的方式。這是一個使用內置iris資料集的示例,展示了如何使用現有變數來獲取預期的結果。
首先,我將分配組名稱和顏色名稱以匹配您的設定:
Group1 <- "setosa"
Group2 <- "versicolor"
Group3 <- "virginica"
Group1col <- "red"
Group2col <- "green"
Group3col <- "blue"
要輕松創建命名向量,我們可以使用setNames:
setNames(c(Group1col, Group2col, Group3col), c(Group1, Group2, Group3))
#> setosa versicolor virginica
#> "red" "green" "blue"
因此,要在繪圖中使用命名變數,您可以執行以下操作:
ggplot(iris, aes(Sepal.Width, Petal.Length, colour = Species))
geom_point()
scale_color_manual(values = setNames(c(Group1col, Group2col, Group3col),
c(Group1, Group2, Group3)))

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/431977.html
