[英]How to fill by mean of a group in ggplot geom_bar
我正在嘗試用顯示組平均值的色標填充我的欄。 輸出僅顯示一種陰影。
我如何進行這項工作以使每個條形的填充都代表每年的CapacityFactor平均值。
最好采用ggplot方式進行此操作,而不是對數據進行預處理。
library(tidyverse)
library(lubridate)
#>
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#>
#> date
metric004 <- data.frame(stringsAsFactors=FALSE,
StationID = c("LOYYB", "LOYYB", "LOYYB", "LOYYB", "LOYYB", "LOYYB",
"LOYYB", "LOYYB", "OAKEY", "OAKEY", "OAKEY", "OAKEY",
"OAKEY", "OAKEY", "OAKEY", "OAKEY"),
DUID = c("LOYYB1", "LOYYB1", "LOYYB1", "LOYYB1", "LOYYB2",
"LOYYB2", "LOYYB2", "LOYYB2", "OAKEY1", "OAKEY1",
"OAKEY1", "OAKEY1", "OAKEY2", "OAKEY2", "OAKEY2",
"OAKEY2"),
MonthStart = c(ymd("2017-11-01", "2017-12-01", "2018-01-01", "2018-02-01",
"2017-11-01", "2017-12-01", "2018-01-01",
"2018-02-01", "2017-11-01", "2017-12-01", "2018-01-01",
"2018-02-01", "2017-11-01", "2017-12-01", "2018-01-01",
"2018-02-01")),
CapacityFactor = c(0.888504, 0.880521, 0.881841, 0.883836, 0.888695,
0.880279, 0.887361, 0.884969, 0, 0.027732, 0.007677,
0.038401, 0, 0.004178, 0.008861, 0.013907)
)
m04_10y_faceted <- metric004 %>% group_by(StationID) %>%
nest() %>%
mutate(metricPlot = map(.x = data,
~ggplot(data=.x %>% group_by(year = as.Date(cut.Date(MonthStart, "year")))) +
aes(year, CapacityFactor, fill = CapacityFactor) +
stat_summary(fun.y = mean, na.rm = TRUE, geom = "bar") +
scale_fill_continuous(limits=c(0,1)) +
facet_grid(DUID ~ .) +
xlab("Year") +
ylab("Capacity Factor") +
scale_x_date(date_breaks = "1 year", date_labels = "%Y", minor_breaks = NULL) +
scale_y_continuous(limits=c(0, 1)) +
coord_cartesian(xlim=c(ymd('2008-09-01'), ymd('2018-03-30'))) +
theme_minimal() +
theme(axis.title.x = element_blank(), axis.ticks = element_blank(),
legend.position = "none")
))
walk2(m04_10y_faceted$StationID, m04_10y_faceted$metricPlot, function(.x, .y) {
plot(.y)
})
由reprex軟件包 (v0.2.1)創建於2019-02-15
如果我正確理解您的要求,則可以嘗試:
fill
參數: aes(year, CapacityFactor, fill = as.factor(year(MonthStart)))
scale_fill_continuous()
更改為scale_fill_manual(values = c("blue", "red"))
您可以在scale_fill_manual()
指定所需的任何顏色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.