簡體   English   中英

ggplot2中的scale_colour_gradient與scale_fill_gradient

[英]scale_colour_gradient vs. scale_fill_gradient in ggplot2

我絕對是ggplot2初學者,並嘗試使用此軟件包繪制漂亮的人物。 我正在閱讀本手冊,但我不了解scale_colour_gradient()scale_fill_gradient()之間的區別。在我的分析中,我將使用“假設”進行觀察,因為我不確定我的結論。

這是對我有用的原始代碼:

實驗1

  erupt <- ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
    geom_raster() 
  erupt

假設:使用默認顏色(即藍色)繪制噴繪密度

我想進一步嘗試ggplot2scale_colour_gradient()scale_fill_gradient()

實驗2

 erupt <- ggplot(faithfuld, aes(waiting, eruptions)) +
    geom_raster(aes(fill=density)) +
    scale_colour_gradient(low = "white", high = "black") 
  erupt

現在,我得到了與實驗1相同的圖形。這是否意味着如果在ggplot的美學設計中使用fill = xyz,我將設置顏色漸變而不是填充漸變嗎? 要了解我為什么要問這個,讓我們看一下實驗3。

實驗3

  erupt <- ggplot(faithfuld, aes(waiting, eruptions)) +
    geom_raster(aes(fill=density)) +
    scale_fill_gradient(low = "white", high = "black") 
  erupt

在這里,我唯一更改的是使用scale_fill_gradient而不是scale_color_gradient 但是,該圖完全不同。 從黑色到白色。

有人可以幫我了解發生了什么嗎? 具體來說,我有兩個問題:

a)當我們設置fill = xyz時,它是設置顏色還是填充?

b) scale_fill_gradientscale_color_gradient什么scale_color_gradient

如果我的問題對您來說太基礎了,我深表歉意。 我不是專家,任重而道遠。


更新:經過討論,得出的結論是:

實驗1中 :該圖使用連續變量“密度”簡單地填充。

實驗2中 ,我填充“密度”,但隨后覆蓋“顏色”。 因此,ggplot嘗試着色柵格圖的邊框(因為我覆蓋顏色),並且與填充無關,因為我沒有覆蓋任何內容。

實驗3中 ,我正在填充和覆蓋,所以我看到了白色和黑色的圖。

為了解決這個問題,我做了兩件事:

實驗2 :修復#1:

    ggplot(faithfuld, aes(waiting, eruptions, fill = density)) + 
geom_raster(aes(colour=density)) + 
scale_colour_gradient(low = "white", high = "red") + 
scale_fill_gradient(low = "white", high = "green") 

要么

修復#2:

    ggplot(faithfuld, aes(waiting, eruptions, fill = density)) + 
geom_raster(aes(colour=density)) + 
scale_colour_gradient(low = "white", high = "black")

另外,為了增加axeman的觀點,這是我所做的:

  ggplot(faithfuld, aes(waiting, eruptions, fill = density)) + 
    geom_tile(aes(fill=density, col=density)) +
    scale_colour_gradient(low = "white", high = "red") +
    scale_fill_gradient(low = "white", high = "green") 

在輸出中,我們將看到瓷磚的邊界按照密度(即紅色)着色,填充色按照綠色進行着色。 因此,通過這種方式,我們可以演示填充和顏色的效果。

ggplot2colorfill分別映射。 color是指點和線的顏色,而fill是指條形填充(即內部顏色),密度填充等。如果在aes()映射fill=xyz然后使用scale_color_... ,它將不會執行任何操作,因為您必須使用scale_fill_...控制fill 如果在這種情況下映射color ,它將改變密度周圍線的顏色; 那么您可以調用scale_color_...進行更改。

暫無
暫無

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

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