首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据分类变量过滤绘图折线图

根据分类变量过滤绘图折线图
EN

Stack Overflow用户
提问于 2018-09-14 04:56:25
回答 1查看 2.9K关注 0票数 2

我想根据我的数据中的一列离散值来过滤用plotly创建的图表。最终目标是能够使用按钮更新筛选器值,因此我不想预先过滤数据。

代码语言:javascript
复制
library(plotly)    

df <- data.frame(group1 = rep(c('low', 'high'), each = 25),
                 x = rep(1:5, each = 5),
                 group2 = letters[1:5],
                 y = c(runif(25, 0, 2), runif(25, 3, 5)))

plot_ly(df, x = ~x, y = ~y, type = 'scatter',
        mode = 'line',
        color = ~group2,
        transforms = list(
            list(
                type = 'filter',
                target = ~group1,
                operation = '=',
                value = 'high'
            )
        )
)

我预计这会给出下面的图表:

但它给出了这样的结果:

它似乎过滤了错误的变量。为什么数据没有按照我期望的方式进行过滤?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-18 08:17:40

问题似乎在于transforms列表的target参数只能接受plot_ly属性的名称,而不能接受原始数据。下面的代码可以工作:

代码语言:javascript
复制
library(plotly)    

set.seed(1)
df <- data.frame(group1 = rep(c("low", "high"), each = 25),
                 x = rep(1:5, each = 5),
                 group2 = letters[1:5],
                 y = c(runif(25, 0, 2), runif(25, 3, 5)))

plot_ly(df, x = ~x, y = ~y, customdata=~group1, type = 'scatter',
        mode = 'line',
        color = ~group2,
        transforms = list(
          list(
            type = 'filter',
            target = 'customdata',
            operation = '=',
            value = 'high'
          )
        )
)

并生成与以下内容相同的图表

代码语言:javascript
复制
plot_ly(df %>% filter(group1=="high"), x = ~x, y = ~y, type = 'scatter',
        mode = 'line',
        color = ~group2
)

当然,您可以用ids等替换它,而不是使用customdata,这是plot_ly允许的属性,但不会影响图表的美观。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52321695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档