如何将sliderInput的范围值传入params$maxprice变量?
解决R Markdown参数化滑块范围值传递问题
你的问题核心是滑块的范围值被当作单个值处理:当滑块设置value: [25,50]时,params$maxprice是一个长度为2的向量,但直接在filter或scale_y_continuous中使用时,R会默认取向量的第一个元素,导致第二个值被忽略,同时y轴无法匹配滑块的起始值。
解决步骤
- 提取滑块的两个范围值:用
params$maxprice[1]获取滑块的下限值,params$maxprice[2]获取上限值。 - 调整数据过滤逻辑:把
price < params$maxprice改成price >= params$maxprice[1] & price <= params$maxprice[2],筛选出价格在滑块范围内的数据。 - 修正y轴范围:把
scale_y_continuous(limits=c(0, params$maxprice))改成scale_y_continuous(limits = params$maxprice),直接用滑块的两个值作为y轴的起止范围。
修改后的完整代码
--- title: "Wine" date: "`r format(Sys.Date())`" output: html_document params: glimpse: FALSE country: label: "Country" value: [US] input: select choices: [US, France, Italy, Argentina] multiple: TRUE variety: label: "Variety" value: ["Cabernet Sauvignon", "Chardonnay"] choices: ["Cabernet Sauvignon", "Chardonnay", "Merlot", "Sauvignon Blanc", "Malbec"] multiple: TRUE maxprice: label: "Max Price" input: slider min: 0 max: 1000 value: [25,50] step: 1 ---
library('here') library('tidyverse') knitr::opts_chunk$set(echo = FALSE, warning=FALSE, fig.width = 4, fig.height = 4, fig.path=here('Output')) wine_ratings <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2019/2019-05-28/winemag-data-130k-v2.csv") ## Subset to varieties of interest wine_ratings <- wine_ratings %>% filter(variety %in% params$variety, country %in% params$country, !is.na(price), # 筛选价格在滑块范围内的数据 price >= params$maxprice[1] & price <= params$maxprice[2])
ggplot(wine_ratings, aes(x=points, y=price)) + geom_boxplot() + facet_wrap(~ variety) + # 直接用滑块的两个值作为y轴范围 scale_y_continuous(limits = params$maxprice) + ggtitle("Wine Price")
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

