当前位置: 首页 > 知识库问答 >
问题:

将数据序列转换为JSON,以实现D3.js可视化

马泰
2023-03-14

我有一个数据,显示了几个用户执行的一系列操作(列<code>actions</code>)(列<code>Id</code>)。数据帧的顺序很重要——它是执行操作的顺序。对于每个id,执行的第一个操作是<code>start</code>。可以连续执行相同的操作(例如,序列<code>start-

set.seed(10)

i <- 0
all_id <- NULL
all_vals <- NULL

while (i < 5) {
  i <- i + 1
  print(i)
  size <- sample(3:5, size = 1)
  tmp_id <- rep(i, times = size + 1)
  tmp_vals <- c("start",sample(LETTERS, size = size)  )

  all_id <- c(all_id, tmp_id)
  all_vals <- c(all_vals, tmp_vals)
}

df <- data.frame(Id = all_id,
                 Action = all_vals)

目标-在嵌套在多个级别上的JSON中转换这些数据,这些数据将在D3.js可视化中使用(就像这样)。我希望看到一个计数器,显示每个孩子为他们各自的父母出现的次数(甚至可能是父母总出现次数的百分比)——但我希望我自己能做到这一点。

下面的预期输出-这是通用的,而不是我上面生成的数据,实际数据将有相当多的嵌套值(count百分比在此时是可选的):

  {
    "action": "start",
    "parent": "null",
    "count": "10",
    "percentage": "100",
    "children": [
      {
        "action": "H",
        "parent": "start",
        "count": "6",
        "percentage": "60",
        "children": [
          {
            "action": "D",
            "parent": "H",
            "count": "5",
            "percentage": "83.3"            
          },
          {
            "action": "B",
            "parent": "H",
            "count": "3",
            "percentage": "50"          
          }
        ]
      },
      {
        "action": "R",
        "parent": "start",
        "count": "4",
        "percentage": "40"
      }
    ]
  }

我知道我应该发布一些我尝试过的东西,但是我真的没有任何值得展示的东西。

共有1个答案

唐烨煜
2023-03-14

我刚开始写一些R-

https://github.com/timelyportfolio/sunburstR中的内部层次结构构建器也可以在这里很好地工作。

当我探索这两条路径时,我会补充答案。

set.seed(10)

i <- 0
all_id <- NULL
all_vals <- NULL

while (i < 5) {
  i <- i + 1
  print(i)
  size <- sample(3:5, size = 1)
  tmp_id <- rep(i, times = size + 1)
  tmp_vals <- c("start",sample(LETTERS, size = size)  )

  all_id <- c(all_id, tmp_id)
  all_vals <- c(all_vals, tmp_vals)
}

df <- data.frame(Id = all_id,
                 Action = all_vals)

# not sure I completely understand what this is
#  supposed to become but here is a first try

# find position of start
start_pos <- which(df$Action=="start")
# get the sequences
#  surely there is a better way but do this for now
sequences <- paste(
  start_pos+1,
  c(start_pos[-1],nrow(df))-1,
  sep=":"
)
paths <- lapply(
  sequences,
  function(x){
    data.frame(
      t(as.character(df[eval(parse(text=x)),]$Action)),
      stringsAsFactors=FALSE
    )
  }
)
paths_df <- dplyr::bind_rows(paths)

# use d3r
# devtools::install_github("timelyportfolio/d3r")
library(d3r)
d3_nest(paths_df) # if want list, then json=FALSE

# visualize with listviewer
# devtools::install_github("timelyportfolio/listviewer")
listviewer::jsonedit(d3_nest(paths_df))
 类似资料:
  • 问题内容: 我用过这种方法 它正在打印“ jsonObject为null”。 “ error:nil”有什么问题吗? 我没有使用任何网址或连接方法。 我有一个json文件,我想在表中显示它。 问题答案: 请尝试以下代码。

  • 问题内容: 我正在尝试将HTML表中存在的数据转换为JSON,以便可以在服务器端进行相应的处理。我可以序列化数据,但是结果充其量只能生成不直接链接的独特数据数组。像:这是我正在使用的形式: 序列化数据的脚本是: 经过数页StackOverFlow之后,我得到了serializeFormJSON(): 通过使用所有这些,我可以得到像这样的JSON: 我尝试了多种方法以名称-性别格式获取它们,但是每种

  • 问题内容: 我正在从一列存储为JSON的数据库(超过5万行)中读取数据。我想将其提取到pandas数据框中。下面的代码片段可以正常工作,但是效率很低,并且在对整个数据库运行时会花费很多时间。请注意,并非所有项目都具有相同的属性,并且JSON具有一些嵌套的属性。 我怎样才能使它更快? 问题答案: json_normalize接受一个已经处理过的json字符串或一系列这样的字符串。 设定

  • 问题内容: 我对熊猫有些陌生。我有一个熊猫数据框,它是1行乘23列。 我想将其转换为系列吗?我想知道最pythonic的方法是什么? 我试过了,但是抱怨。它不够聪明,无法意识到它仍然是数学上的“向量”。 谢谢! 问题答案: 它不够聪明,无法意识到它仍然是数学上的“向量”。 可以说它足够聪明,可以识别尺寸差异。:-) 我认为您可以做的最简单的事情是使用位置选择该行,这将为您提供一个Series,其列

  • 我一直在android studio上开发一个Java应用程序,我想提取我存储在google数据存储中的几个实体。实体存储为列表 我只需要每个属性的“值”。 有没有办法将响应转换回带有json的数据存储实体? 编辑:我的代码片段

  • 问题内容: 是否有任何jQuery或javascript库根据给定的json数据生成动态表?我不想定义列,该库应该读取json哈希中的键并生成列。 当然,我可以自己遍历json数据并生成html表。我只想知道是否存在可以简单重用的此类库。 问题答案: 感谢大家的答复,这使用jQuery。 程式码片段: