添加动态标题以根据另一个 df 中的值绘制

Add a dynamic title to plot based on value in another df

我有两个数据框,一个在下面的函数中用作输入,另一个称为缩写,包含两列:欧洲城市的缩写 (Abvr) 和城市的全名 (Name)。

我想要做的是在我的绘图中添加一个动态标题,以在缩写数据框中查找城市的全名。这个名字叫做“X”,我想在下面的函数中使用。我正在努力寻找一种方法来添加它。当我输入 ggtitle(paste0("Storms in ",abbreviations$name))

它只是选择随机城市列的第一个值,而不是与我的其他数据框中的城市相匹配的值。

我有以下代码:

plot_by_city<- function(dataframe, city_name, color="red"){
data1 <- filter(dataframe, city == city_name)  
ggplot(data = data1, aes(x= scale, y= injuries)) + 
geom_point(position= "jitter",shape=23, fill= color, color="black", size=3)+
ggtitle(paste0("Storms in ",X))
}

可能的输入是 plot_by_city((Dataframe,"AMS", "tan")

您可以使用 city_name 参数

对数据帧进行子集化
# Make data
df <- data.frame(
  x = runif(100, 0, 10),
  y = runif(100, 0, 10),
  city = sample(c("AMS", "NYC", "SF"), 100, replace = TRUE)
)

cities_df <- data.frame(
  abb = c("AMS", "NYC", "SF"),
  city_full = c("Amsterdam", "New York", "San Francisco")
)

# Plot function
plot_by_city<- function(dataframe, city_name, color="red"){
  data1 <- filter(dataframe, city == city_name)  
  city_full_name <- cities_df$city_full[cities_df$abb == city_name]
  
  ggplot(data = data1, aes(x = x, y = y)) + 
    geom_point(position= "jitter",shape=23, fill= color, color="black", size=3) + 
    labs(title = paste0("Storms in ", city_full_name))
}

plot_by_city(df, "NYC")