r - 散点图,按类别变量着色,分面超过 r 中的类别变量
问题描述
我有一个包含许多数字和分类变量的数据框。
data <- data.frame(dep_var = ...,
cat1 = ...,
cat2 = ...,
...
num1 = ...,
num2 = ...,
...)
如果我选择一个单一的数字特征,我可以将它与因变量绘制成分类变量的分面(忽略图例占据页面一半的事实 - 我正在对集群进行高级查找)
cat_cols <- c("cat1", "cat2",... , "cat6")
data %>% select(dep_var, var1, cat_cols) %>%
gather(category, value, -c(dep_var, var1)) %>%
ggplot(aes(x=var1, y=dep_var))+
facet_wrap(~ category) + geom_point(aes(color=value))
但是,如果我尝试将它包装在一个函数中并 lapply,则绘图的工作方式不同:
num_cols <- ("num1", "num2", "num3",...)
lapply(names(data[num_cols]),
function(x) {
data %>% select(dep_var, x, cat_cols) %>%
gather(category, value, -c(dep_var, x)) %>%
ggplot(aes(x=x, y=dep_var))+
facet_wrap(~ category) + geom_point(aes(color=value))
})
对于我拥有的每个数字变量,都有其中一种类型的图。我在应用程序中缺少什么?
解决方案
在 aes 调用中使用 get() 函数将字符串转换回“裸名”解决了这个问题:
lapply(names(data[num_cols]),
function(x) {
data %>% select(dep_var, x, cat_cols) %>%
gather(category, value, -c(dep_var, x)) %>%
ggplot(aes(x=get(x), y=dep_var))+ //Fix here with get() function
facet_wrap(~ category) + geom_point(aes(color=value))
})
推荐阅读
- javascript - 如何使用 jquery 将类值从弹出窗口传输到父窗口
- mysql - LockModeType.PESSIMISTIC_WRITE 的单元测试
- macos - 每次设置 Android_Home 和 JAVA_HOME 变量需要在 MAC 上为 Appium 运行“source ~/.profile”
- pointers - DNS 回答中的奇怪字符
- c# - @Html.HiddenFor 不将值传递给控制器
- c# - 如何调用插入数据库的数据的ID?
- reactjs - 如何为“@testing-library/react”fireEvent“清除模拟”?
- python - python中人类可读的字节大小
- asp.net-core - ASP.NET 核心 JWT 令牌验证在同一来源上失败
- recursion - 简单的递归函数 - OCAML