簡體   English   中英

ggplot:如何在 plot 中添加第二個圖例,其中因素都有不同的美學,只有一個因素有顏色漸變

[英]ggplot: How can I add a second legend to a plot where factors all have different aesthetics and only 1 factor has a color gradient

我已經編寫了這個散點圖,但我遇到了困難,可以使用一些幫助。 我希望它包含兩個圖例:一個是僅一個因素的強度(如下所示),我能夠做到,另一個將包括所有因素的形狀,也許還有顏色 - 這個我做不到弄清楚。

這是我的數據集和代碼:

lvl <-  c("mid","mid","mid","mid","mid","mid","mid","mid","mid","mid","high","high","high","high",            
          "high","high","high","high","high","high","low","low","low","low","low","low","low",
          "low","low","low")
x <- c(6.06,4.42,6.81,1.7,1.29,6.75,4.48,2.64,4.31,3.93,1.56,2.25,6.53,4,5.09,3.7,1.19,7.71,4.4,8.49,
       4.14,5.37,7.1,2.94,1.75,2.49,1.37,1.22,9.29,1.37)
y <- c(4.17,1.41,6.79,1.72,1.45,7.29,4.49,2.72,1.34,6.66,3.94,2.84,7.3,3.97,4.95,9.03,5.23,8.77,1.13,
       2.76,5.3,4.53,7.42,3.15,6.97,2.36,1.07,1.16,9.17,1.72)
z <- c(1.26,1.34,2.53,3.83,2.78,9.93,1.23,9.97,1.71,1.3,1.31,1,6.06,2.26,3.29,2.29,2.52,2.02,2.68,
       9.7,2.9,1.7,6.65,9.54,2.05,1.06,3.59,1.16,2.99,1.14)

data <- data.frame(lvl,x,y,z)
low <- data %>% filter(lvl == "low")
mid <- data %>% filter(lvl == "mid")
high <- data %>% filter(lvl == "high")

ggplot(data = result_df, aes(x=x, y=y, color=lvl, shape=lvl)) +
     geom_point(data = high, color = "gray81", shape = 18, size = 2, aes(color="high")) +
     geom_point(data = mid, shape = 2, size = 4, stroke = 1.5, color = "black",aes(color="mid")) +
     theme_classic()+
     theme(legend.position="right")+
     geom_point(data = low, size = 4, shape = 21, stroke = 1.5, color = "black", aes(fill = log10(z), 
     color = "low")) + 
     scale_fill_gradientn(name = "z Intensity" , colors = c("darkblue", "blue","red", "darkred"))+ 
     scale_x_log10()+
     scale_y_log10()

這是我的 plot: 在此處輸入圖像描述

我嘗試使用 scale_color_manual() 手動添加一個,但似乎沒有這樣做。 我相信我的問題與我如何將參數映射到 aes 有關,但我整天都在嘗試修改代碼,但沒有運氣。 顯然我是一只小鹿,任何幫助都提前表示感謝。

您在幾何圖形中添加了兩次color 您應該使用scale_color_manual來選擇 colors 和scale_shape_manual作為形狀:

ggplot(data = data, aes(x=x, y=y, color=lvl, shape=lvl)) +
  geom_point(data = high,aes(color="high",shape ="high"), size = 2) +
  geom_point(data = mid,aes(color="mid", shape ="mid"),  size = 4, stroke = 1.5) +
  geom_point(data = low, aes(fill = log10(z),color = "low", shape = "low"), size = 4, stroke = 1.5) +
  scale_shape_manual(values=c(18, 21, 2))+
  scale_fill_gradientn(name = "z Intensity" , colors = c("darkblue", "blue","red", "darkred"))+ 
  scale_color_manual(values = c("gray81", "black","black"))+ 
  theme_classic()+
  theme(legend.position="right")+
  scale_x_log10()+
  scale_y_log10()

在此處輸入圖像描述

暫無
暫無

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

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