gpt4 book ai didi

r - facet_grid label_both 将标签文本动态分面变量包装在 Shiny 的图中

转载 作者:行者123 更新时间:2023-12-03 19:09:21 24 4
gpt4 key购买 nike

所以我正在努力让情节像我想要的那样工作。我有一个 facet_grid,其中 facetted 变量是在 Shiny 的应用程序中动态确定的...facet_grid(facetFormula, labeller = label_both)在哪里...facetFormula <- as.formula(paste(input$filter2Var, "~", input$filter1Var))这工作正常,除了我宁愿换行作为变量“名称:值”分隔符而不是冒号。我使用 multi_line 探索了其他参数( seplabel_both() )或 label_wrap_gen()labeller()而不是 label_both没有括号......而且我无处可去,可能是在已经很复杂的动态变量问题上绊倒了。我试过用 !!sym() 处理这些不同函数的参数或 as.formula() ,但我真的不知道我在做什么,并且可能在尝试向我的分面标签添加一些简单的文本换行时搞砸了几件事。任何帮助深表感谢!
更新...

cases <- c("case1_has_long_name", "case2_long_too", "case3_long_as_well", "case4_also_long", "case5_long")
the_first_variable <- cases[round(runif(100,1,3))]
variable_number_two <- cases[round(runif(100,1,5))]
var1 <- "the_first_variable"
var2 <- "variable_number_two"
facetFormula <- as.formula(paste(var1, "~", var2))
myX <- runif(100,0,10)
myY <- runif(100,-5,5)
myData <- data.frame(myX, myY, the_first_variable, variable_number_two)
ggplot(myData, aes(x = myX, y = myY)) +
geom_point(alpha = .5) +
facet_grid(facetFormula,
labeller = label_both)
这会生成一个关于我的问题的图,其中方面标签太大。我只是想学习如何使标签包装。想作为一个简单的开始,而不是“:”作为变量名和变量值之间的分隔符,我可以使用“\n”作为分隔符。将我的 facet 变量指定为变量本身的尴尬来自于它们在 Shiny 的应用程序中动态定义。

最佳答案

包装刻面标签可以这样实现:
贴标器将带有变量名称和标签的 df 作为其第一个参数。在您的情况下,只有一列的 df。该列包含标签,列名是 var 名称。
为了包装标签,我在 label_both 周围使用了包装函数在将操纵的 df 传递给 label_both 之前,我首先包装标签。为了使包装工作,我用空格替换了所有下划线。

library(ggplot2)

my_label <- function(x) {
# Wrap var names
names(x)[[1]] <- stringr::str_wrap(gsub("_", " ", names(x)[[1]]), 10)
# Wrap value labels
x[[1]] <- stringr::str_wrap(gsub("_", " ", x[[1]]), 10)
# Call label both with sep "\n"
label_both(x, sep = "\n")
}

ggplot(myData, aes(x = myX, y = myY)) +
geom_point(alpha = .5) +
facet_grid(facetFormula, labeller = my_label)

关于r - facet_grid label_both 将标签文本动态分面变量包装在 Shiny 的图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62662747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com