如何将随机选中的游戏名称设为ggplot可视化图表的标题?
解决方法
问题核心是你每次调用random_name函数时,都会重新执行一次随机抽样,导致过滤数据和设置标题用的是两个不同的游戏名。下面是两种简单的修改方案:
方案一:提前生成并保存随机游戏名(推荐)
直接先抽取一次游戏名并存在变量里,后续过滤数据和设置标题都复用这个变量:
# 生成随机游戏名并保存 selected_game <- sample(vgsales3$Name, 1) print(selected_game) # 绘制图表,复用同一个变量 ggplot(vgsales3 %>% filter(region != "Global_Sales", Name == selected_game), aes(Platform, value, fill = region)) + geom_col() + labs(y = "Sales", title = selected_game)
方案二:修改random_name函数并复用返回值
如果你想保留自定义函数,修改函数让它返回选中的游戏名,再保存到变量里使用:
# 修改函数,添加返回值 random_name <- function(vgsales) { selected <- sample(vgsales$Name, 1) print(selected) return(selected) # 明确返回选中的名称 } # 获取随机游戏名并保存 selected_game <- random_name(vgsales3) # 绘制图表 ggplot(vgsales3 %>% filter(region != "Global_Sales", Name == selected_game), aes(Platform, value, fill = region)) + geom_col() + labs(y = "Sales", title = selected_game)
原代码问题说明
你之前的写法里,filter中调用random_name会抽一次游戏,要是在ggtitle里再调用一次,又会抽另一个完全不同的游戏——因为每次调用random_name都会重新执行sample,自然就出现了标题和数据不匹配的情况。只要把随机结果提前存下来,复用同一个值就能解决问题。
内容的提问来源于stack exchange,提问作者Maxim Tollenaere
相关产品推荐
相关产品推荐

