簡體   English   中英

R ggplot2:手動設置沒有“填充”美學的填充顏色?

[英]R ggplot2: manually set fill colour without "fill" aesthetic?

假設一把小提琴 plot 使用 ggplot2 創建,只有一個因子(在水平軸上)。 這個 plot 顯示無色小提琴,因為單一因素用於 x 軸。

例如,這個快速的 MWE:

oneplot <- ggplot(ToothGrowth, aes(x=dose, y=len)) +
  geom_violin()
oneplot

之后是否可以設置填充顏色? 在我的實際設置中,plot 是通過負責多個事物的大型程序生成的,並且沒有分配“填充”美學; 它只是提供了一個 plot ,可以在事后使用其他圖形指令(例如scale_fill_manual )進行更改。

我希望我可以添加一些指令,例如,

oneplot + scale_fill_manual(breaks = c(0.5,1,2), values = c("orange", "purple","blue"))

但目前,填充物完全沒有顏色!

不是很出名,但您也可以將aes用作附加 plot 組件。

所以:

oneplot <- ggplot(ToothGrowth, aes(x=factor(dose), y=len)) +
  geom_violin()
oneplot

在此處輸入圖像描述

oneplot + aes(fill = supp)

在此處輸入圖像描述

這確實假設您的 fill 變量存在於數據中,因此supp必須存在於ToothGrowth中。 但是,我們也可以使用特殊運算符%+%更新數據組件:

oneplot %+% filter(ToothGrowth, dose < 2) + aes(fill = supp)

在此處輸入圖像描述

在對相同的 plot 進行細微改動時,這些技術非常有用。定義一次大型結構,然后為每個 plot 更新數據或美學。

我認為您正在尋找的具體結果(實際上只是 Axeman 出色回答的后續結果)是:

oneplot + 
  aes(fill = factor(dose)) +
  scale_fill_manual(breaks = c(0.5,1,2), values = c("orange", "purple","blue"))

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM