3

当对分类变量使用 filter_select 时,串扰没有正确过滤,从其他类别中获取值。

可重现的例子:


df <- structure(list(weight = c(0.349, 0.336, 0.329, 0.331, 0.329, 
 0.329, 0.321, 0.317, 0.317, 0.349, 0.351, 0.353, 0.355, 0.355, 
 0.355, 0.355, 0.356, 0.356, 0.358, 0.356, 0.356), value = c("housewife", 
    "Merchant", "Unknown", "Technologist", 
   "Admin", "Student", "Social worker", "Unemployed", 
   "Consultant", "Home", "Food", 
  "Engineering", "Real Estate", "Tourism", "Repairment", "Transport", 
   "Navy", "Military", "Security", "Distribution", "Restaurant"
 ), variable = c("work", "work", "work", 
                 "work", "work", "work", "work", "work", 
                  "work", "sector", "sector", "sector", "sector", 
                  "sector", "sector", "sector", "sector", "sector", 
                   "sector", "sector", "sector")), class = "data.frame",
          row.names = c(NA,-21L))

>  df
   weight         value variable
1   0.349     housewife     work
2   0.336      Merchant     work
3   0.329       Unknown     work
4   0.331  Technologist     work
5   0.329         Admin     work
6   0.329       Student     work
7   0.321 Social worker     work
8   0.317    Unemployed     work
9   0.317    Consultant     work
10  0.349          Home   sector
11  0.351          Food   sector
12  0.353   Engineering   sector
13  0.355   Real Estate   sector
14  0.355       Tourism   sector
15  0.355    Repairment   sector
16  0.355     Transport   sector
17  0.356          Navy   sector
18  0.356      Military   sector
19  0.358      Security   sector
20  0.356  Distribution   sector
21  0.356    Restaurant   sector

df <- highlight_key(df)

library(plotly)
library(crosstalk)

widgets <- bscols(
  widths = c(12),
  filter_select("variable", "Choose Variable", df, ~variable)
)
bscols(
  widths = c(2,10), widgets, 
  plotly::plot_ly(df, y = ~ weight, x = ~ value) %>%
    add_lines() %>%
    layout(xaxis = list(nticks = 10,
                        tickformat = ".2f")
           , showlegend = F)  )

我得到以下错误的输出:

在此处输入图像描述

4

1 回答 1

3

categoryarray您需要使用和定义 x 轴上的类别categoryorder。在您的示例中,您可能会误xaxis认为yaxis.

此外,将按(x-values) 的字母顺序add_lines连接(y- values)。因此需要替换为or 。weightvalueadd_linesadd_pathstype = "scatter", mode = "lines"

代码

df <- highlight_key(df)

widgets <- bscols(
  widths = c(12),
  filter_select("variable", "Choose Variable", df, ~variable)
)

bscols(
  widths = c(2,10),
  widgets,
  plotly::plot_ly(df, y = ~ weight, x = ~ value,
                  type = "scatter", mode = "lines") %>%
    layout(xaxis = list(type = 'category',
                        categoryarray =  ~value,
                        categoryorder = "array"),
           yaxis = list(nticks = 10,
                        tickformat = ".2f"),
           showlegend = F))  

情节 在此处输入图像描述

于 2021-09-30T19:38:51.633 回答