圖檔

Author

張翊如

#產生及處理細項 ##各縣市

畫垃圾處理圖 <- function(資料, 地區) {
  資料 |>
    filter(地區別 == 地區) |>
    pivot_longer(cols = c(回收再利用比例, 焚化比例, 衛生掩埋比例, 其他比例),
                 names_to = "垃圾處理類別", values_to = "占比") |>
    ggplot(aes(x = 年月, y = 占比, fill = 垃圾處理類別)) +
    geom_area(position = "stack", alpha = 0.7) +
    scale_fill_manual(values = c(
      "回收再利用比例" = "#D4E6F1",
      "其他比例" = "#85C1E9",
      "衛生掩埋比例" = "#3498DB",
      "焚化比例" = "#1B4F72"
    )) +
    labs(title = paste0(地區, "垃圾處理趨勢"),
         x = "年月", y = "占比", fill = "垃圾處理類別") +
    theme_minimal()
}

畫垃圾產生圖 <- function(資料, 地區) {
  資料 |>
    filter(地區別 == 地區) |>
    pivot_longer(cols = c(一般垃圾比例, 資源垃圾比例, 廚餘比例, 事業員工生活垃圾比例),
                 names_to = "垃圾產生類別", values_to = "占比") |>
    ggplot(aes(x = 年月, y = 占比, fill = 垃圾產生類別)) +
    geom_area(position = "stack", alpha = 0.7) +
    scale_fill_manual(values = c(
      "事業員工生活垃圾比例" = "#D4E6F1",
      "廚餘比例" = "#85C1E9",
      "資源垃圾比例" = "#3498DB",
      "一般垃圾比例" = "#1B4F72"
    )) +
    labs(title = paste0(地區, "垃圾產生趨勢"),
         x = "年月", y = "占比", fill = "垃圾產生類別") +
    theme_minimal()
}

for (地區 in 地區列表) {
  print(畫垃圾處理圖(data_比例, 地區))
  print(畫垃圾產生圖(data_比例, 地區))
}

##分區

畫處理趨勢圖 <- function(資料, 分區名稱) {
  data <- 資料 |>
    filter(分區 == 分區名稱) |>
    pivot_longer(
      cols = c(平均回收比例, 平均焚化比例, 平均衛生掩埋比例, 平均其他比例),
      names_to = "垃圾處理類別",
      values_to = "平均占比"
    ) |>
    select(年月, 垃圾處理類別, 平均占比)
  
  ggplot(data, aes(x = 年月, y = 平均占比, fill = 垃圾處理類別)) +
    geom_area(position = "stack", alpha = 0.7) +
    scale_fill_manual(values = c(
      "平均回收比例" = "#D4E6F1",
      "平均其他比例" = "#85C1E9",
      "平均衛生掩埋比例" = "#3498DB",
      "平均焚化比例" = "#1B4F72"
    )) +
    labs(title = paste0(分區名稱, "垃圾處理趨勢"),
         x = "年月", y = "占比", fill = "一般廢棄物處理類別") +
    theme_minimal()
}


畫產生趨勢圖 <- function(資料, 分區名稱) {
  data <- 資料 |>
    filter(分區 == 分區名稱) |>
    pivot_longer(
      cols = c(平均一般垃圾比例, 平均資源垃圾比例, 平均廚餘比例, 平均事業員工生活垃圾比例),
      names_to = "垃圾產生類別",
      values_to = "平均占比"
    ) |>
    select(年月, 垃圾產生類別, 平均占比)
  
  ggplot(data, aes(x = 年月, y = 平均占比, fill = 垃圾產生類別)) +
    geom_area(position = "stack", alpha = 0.7) +
    scale_fill_manual(values = c(
      "平均事業員工生活垃圾比例" = "#D4E6F1",
      "平均廚餘比例" = "#85C1E9",
      "平均資源垃圾比例" = "#3498DB",
      "平均一般垃圾比例" = "#1B4F72"
    )) +
    labs(title = paste0(分區名稱, "垃圾產生趨勢"),
         x = "年月", y = "占比", fill = "一般廢棄物產生類別") +
    theme_minimal()
}


for (區 in 分區清單) {
  print(畫處理趨勢圖(data_比例_分區平均, 區))
  print(畫產生趨勢圖(data_比例_分區平均, 區))
}

#各縣市產生及處理差異

data_產生及處理差異 <- data |>
  select(年月, 地區別, 一般廢棄物處理量, 一般廢棄物產生量) |>
  mutate(差異 = 一般廢棄物處理量 - 一般廢棄物產生量)

data_產生及處理差異 <- data_產生及處理差異 |>
  mutate(差異方向 = ifelse(差異 >= 0, "處理 > 產生", "處理 < 產生"))

畫差異柱狀圖 <- function(資料, 地區) {
  ggplot(資料 |> filter(地區別 == 地區), aes(x = 年月, y = 差異, fill = 差異方向)) +
    geom_col() +
    geom_hline(yintercept = 0, linetype = "dashed", color = "gray40") +
    scale_fill_manual(values = c("處理 > 產生" = "#3498DB", "處理 < 產生" = "#E74C3C")) +
    labs(title = paste0(地區, "產生與處理差異(正負顯示)"),
         x = "年月", y = "差異量", fill = "狀態") +
    theme_minimal() +
    theme(axis.text.x = element_text(angle = 45, hjust = 1))
}

for (地區 in 地區列表) {
  print(畫差異柱狀圖(data_產生及處理差異, 地區))
}

#扣除事業員工垃圾 ##各縣市

畫扣除事業員工生活垃圾<-function(data,地區){
  ggplot(data|>filter(地區別 == 地區),aes(x=年月,y=一般廢棄物產生量-事業員工生活垃圾))+
    geom_bar(stat = "identity", fill = "steelblue")+
    labs(title = paste0(地區, "一般廢棄物產生扣除事業員工生活垃圾"),
         x = "年月", y = "一般廢棄物產生扣除事業員工生活垃圾") +
    theme_minimal()
}
for (地區 in 地區列表) {
  print(畫扣除事業員工生活垃圾(data, 地區))
}

##全台

ggplot(data|>
         group_by(年月)|>
         summarise(全台垃圾產生=sum(一般廢棄物產生量),
                   全台事業廢棄物=sum(事業員工生活垃圾)),aes(x=年月,y=全台垃圾產生-全台事業廢棄物))+
  geom_bar(stat = "identity", fill = "steelblue")+
  labs(title = "全台一般廢棄物產生扣除事業員工生活垃圾",
       x = "年月", y = "全台一般廢棄物產生扣除事業員工生活垃圾") +
  theme_minimal()

#分區人均垃圾產生量

data_分區人均垃圾產生量<-data|>
  group_by(分區,年月)|>
  summarise(一般廢棄物分區總產生=sum(一般廢棄物產生量),
            分區總人口=sum(人口))|>
  mutate(平均分區一般廢棄物產生=一般廢棄物分區總產生/分區總人口)

ggplot()+
  geom_line(data_分區人均垃圾產生量|>filter(分區!="其他"), mapping = aes(x= 年月, y=平均分區一般廢棄物產生, col= 分區))+
  scale_color_brewer(palette = "Blues") +
  labs(y="人均產生量(公噸)",
       col="分區",
       x="年份")+
  theme_minimal() +
  theme(
    plot.title = element_text(size = 14, face = "bold"),
    strip.background = element_rect(fill = "#d7dfe5", color = "#d7dfe5"))