簡體   English   中英

使用 ggplot 的 stat_summary 更改主題和圖例元素

[英]Change theme and legend elements with stat_summary of ggplot

我有以下代碼:

drawCombinedSeries <- function(data, xData, yData, dataGroup, title, fileName, outputPath) {
  
  plt <- ggplot(data, aes(x = xData, y = yData, fill = dataGroup)) +
    stat_summary(geom = "line", size=1, fun = mean, aes(color=dataGroup, group = dataGroup)) +
    stat_summary(geom = "ribbon", fun.data = mean_se, alpha = 0.3, aes(fill = dataGroup)) +
    labs(title = title, x="Month", y="") +
    theme(legend.position="bottom", axis.title.x = element_blank(), text = element_text(size=12, colour="black")) +
    scale_x_discrete(name = "Month", limits=c(1:12), expand = c(0,0)) 
  
  setwd(outputPath)
  ggsave(filename=fileName, width=10, height = 2.5)
  return(plt)
}

此函數返回此圖:

活動圖

我想要的是將線條的顏色更改為灰度,並重命名圖例。

我嘗試使用theme_bw() ,但它不起作用,因為我已經有了我的theme() 關於圖例,當我嘗試創建自己的圖例時,它只為最后一個stat_summary創建一個圖例,即功能區,因此有兩個圖例。 我一直在尋找一種方法來處理兩個stat_summary函數,因為我認為這就是問題所在,但我沒有發現任何有啟發性的東西。

我使用labs函數更改colorfill參數解決了圖例名稱的問題。 在圖中,我有顏色(即線條)和填充物(即色帶),因此必須更改兩者以重命名圖例。

我附上工作代碼。

drawCombinedSeries <- function(data, xData, yData, dataGroup, title, fileName, outputPath) {
  
  plt <- ggplot(data, aes(x = xData, y = yData, fill = dataGroup)) +
    stat_summary(geom = "line", size=.6, fun = mean, aes(color=dataGroup, group = dataGroup)) +
    stat_summary(geom = "ribbon", fun.data = mean_se, alpha = 0.25, aes(fill = dataGroup)) +
    labs(title = title, x="Month", y="", fill = "Status", color = "Status") +
    theme(legend.position="bottom", axis.title.x = element_blank(), text = element_text(size=12, colour="black"), panel.background = element_blank(), panel.grid = element_line(colour = "gray")) +
    scale_x_discrete(name = "Month", limits=c(1:12), expand = c(0,0)) +
    scale_fill_manual(values = c('Alive' = "#666666",'Zombie' = "#777777", 'Dead' = "#ffffff")) +
    scale_color_manual(values = c('Alive' = "#666666",'Zombie' = "#777777", 'Dead' = "#ffffff"))
  
  setwd(outputPath)
  ggsave(filename=fileName, width=10, height = 2.5)
  return(plt)
} 

我使用scale_color_manualscale_fill_manual對色帶的重疊進行了更好的可視化。 為了重命名圖例,我更改了labs()函數的fillcolor字段。

暫無
暫無

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

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