使用plotly库,我在R中制作了以下图表:
从这里,我还可以得出汇总统计信息:
有人能向我展示如何在R中实现这个功能吗?
我有一个想法 - 首先我会创建一个巨大的表格,它将创建所有可能的"var1"和"var2"范围组合:
然后,将为“custom_df”创建一个个体图,并记录“custom_df”的摘要统计信息:
library(dplyr)
library(ggplot2)
library(plotly)
set.seed(123)
df <- data.frame(var1 = rnorm(1000,10,10),
var2 = rnorm(1000,5,5))
df <- df %>% mutate(var3 = ifelse(var1 <= 5 & var2 <= 5, "a", ifelse(var1 <= 10 & var2 <= 10, "b", "c")))
plot = df %>%
ggplot() + geom_point(aes(x=var1, y= var2, color= var3))
ggplotly(plot)
这是一个简单的散点图 - 生成两个随机变量,然后通过某些标准来决定点的颜色(例如,如果var1和var2在一定范围内)。从这里,我还可以得出汇总统计信息:
df$var3 = as.factor(df$var3)
summary = df %>%
group_by(var3) %>%
summarize(Mean_var1 = mean(var1), Mean_var2 = mean(var2), count=n())
# A tibble: 3 x 4
var3 Mean_var1 Mean_var2 count
* <fct> <dbl> <dbl> <int>
1 a -1.70 0.946 158
2 b 4.68 4.94 260
3 c 15.8 6.49 582
我的问题是:是否可以向这个绘图添加一些按钮,使用户可以根据自定义选择对点进行着色?例如,像这样:
现在,用户可以输入任何他们想要的范围 - 点的颜色会改变,并生成一些摘要统计信息。有人能向我展示如何在R中实现这个功能吗?
我有一个想法 - 首先我会创建一个巨大的表格,它将创建所有可能的"var1"和"var2"范围组合:
vec1 <- c(-20:40,1)
vec2 <- c(-20:40,1)
a <- expand.grid(vec1, vec2)
for (i in seq_along(vec1)) {
for (j in seq_along(vec2)) {
df <- df %>% mutate(var3 = ifelse(var1 <= i & var2 <= i, "a", ifelse(var1 <= j & j <= 10, "b", "c")))
}
}
接着,根据用户想要的范围 - 一个类似SQL语句的语句将来自这个巨大表格的行隔离出来,对应于那些范围:
custom_df = df[df$var1 > -20 & df$var1 <10 & df$var1 > -20 & df$var2 <10 , ]
然后,将为“custom_df”创建一个个体图,并记录“custom_df”的摘要统计信息:
summary = custom_df %>%
group_by(var3) %>%
summarize(Mean_var1 = mean(var1), Mean_var2 = mean(var2), count=n())
但我不确定如何在R中整洁高效地完成这个任务。
有人可以向我展示如何做到这一点吗?
谢谢
shiny
的解决方案吗? - akrun