我正在尝试重命名绘图中的构面标签,并且必须从另一个数据框中读取它。我已经创建了一个函数来检索每个企业的正确标签,但是所有标签都打印在构面上,这是什么问题?
df <- structure(list(Year_Month = c(
"2016_06", "2016_06", "2016_07",
"2016_07", "2016_08", "2016_08", "2016_09", "2016_09", "2016_09",
"2016_09", "2016_10", "2016_10", "2016_10", "2016_10", "2016_11",
"2016_11", "2016_12", "2016_12", "2017_01", "2017_01", "2017_01",
"2017_02", "2017_02", "2017_02", "2017_02", "2017_03", "2017_03",
"2017_03", "2017_03", "2017_03", "2017_03", "2017_04", "2017_04",
"2017_04", "2017_04", "2017_04", "2017_05", "2017_05", "2017_05",
"2017_05", "2017_05", "2017_05", "2017_06", "2017_06", "2017_06",
"2017_06", "2017_06", "2017_06", "2017_07", "2017_07"),
Business = c("A",
"E", "A", "B", "B", "E", "F", "A", "H", "B", "A", "D", "B", "E",
"B", "E", "F", "B", "F", "B", "E", "A", "B", "C", "E", "F", "A",
"G", "D", "B", "E", "F", "A", "G", "B", "E", "F", "A", "D", "B",
"C", "E", "F", "A", "D", "B", "C", "E", "F", "A"),
`MMR Count` = c(2L,
1L, 1L, 7L, 2L, 1L, 1L, 3L, 1L, 5L, 1L, 1L, 4L, 1L, 8L, 4L, 1L,
4L, 2L, 2L, 2L, 3L, 8L, 1L, 2L, 1L, 7L, 1L, 4L, 9L, 2L, 4L, 10L,
2L, 15L, 7L, 4L, 27L, 2L, 14L, 1L, 6L, 9L, 31L, 5L, 14L, 1L,
4L, 5L, 21L),
`Duration Average` = c(37, 20, 9, 8, 2, 5, 1, 1,
1, 14, 1, 19, 8, 1, 21, 77, 1, 18, 8, 1, 1, 194, 9, 14, 19, 1,
10, 1, 6, 9, 18, 4, 12, 170, 7, 35, 9, 10, 7, 12, 3, 15, 5, 9,
10, 10, 18, 11, 16, 14)), .Names = c("Year_Month", "Business",
"MMR Count", "Duration Average"), row.names = c(NA, 50L), class = "data.frame")
df$date = as.Date(paste0(df$Year_Month, "_01"), format = "%Y_%m_%d")
#calculating the mean of data
library(tidyverse)
dMean <- df %>%
group_by(Business) %>%
summarise(MN = round(mean(`Duration Average`),2)) %>%
mutate(label=paste(Business, " (Overall: ",MN,")"))
#function to retrieve the label of a specific business to be shown on the facet
get_mean <-function(string) {
d_label <- dMean %>% filter(Business==string) %>% select(label);
d_label= as.character(d_label)
return (d_label)
}
appender <- function(string, suffix = get_mean(string)) paste0(string, suffix)
#plot
ggplot(df,
aes(x=date,
y=`Duration Average`,
group=Business,
color=Business,
size=`MMR Count`)) +
geom_line(aes(group=Business),stat="identity", size=1, alpha=0.7) +
geom_point(aes(colour=Business, alpha=0.7)) +
facet_wrap(~ Business, ncol=2, labeller = as_labeller(appender)) +
scale_y_log10( limits=c(.1,1000),breaks=c(1,10,100,1000)) +
scale_alpha_continuous(range = c(0.5,1), guide='none') +
geom_text(aes(label=`Duration Average`,vjust=-1),size=3) +
geom_text(aes(label=`MMR Count`,vjust=2),size=3,color="brown")
答案 0 :(得分:1)
一种选择是将dMean
连接到df
上,然后在标签上刻上
df %>%
left_join(dMean) %>%
ggplot(aes(x=date,
y=`Duration Average`,
group=1,
color=Business,
size=`MMR Count`
)) +
geom_line(size = 1, alpha=0.7) +
geom_point(alpha=0.7) +
facet_wrap(~ label, ncol=2) +
scale_y_log10( limits=c(.1,1000),breaks=c(1,10,100,1000)) +
scale_alpha_continuous(range = c(0.5,1), guide='none') +
geom_text(aes(label=`Duration Average`,vjust=-1),size=3) +
geom_text(aes(label=`MMR Count`,vjust=2),size=3,color="brown")