0

我已经阅读了至少六个关于这样做的其他问题,但我无法弄清楚我的不同之处:http: //jsfiddle.net/JakobJingleheimer/Z5UFg/1/

我添加了一个LoadGraph.check_data从控制台运行的函数。运行后输出的数据load_data(1,"199 Water St",7);为:

#mine
[ { label:"coffee",  data:[ [1659] ] },
  { label:"cocoa",  data:[ [717] ] },
  { label:"tea",  data:[ [206] ] }
]

在我看来,这与文档中的示例完全相同(就在Plot Options上方):

#doc example
[ { label: "Foo", data: [ [10, 1], [17, -14], [30, 5] ] },
  { label: "Bar", data: [ [11, 13], [19, 11], [30, -7] ] }
]

我还尝试在SO answer 5661134之后对我的结构进行建模,但这也没有成功(与小提琴中看到的结果完全相同)。

小提琴中的第二张图应该有 3 个相邻的条形图,或者(更好的是)将 3 个条形图堆叠在一起。

更新:我添加了一个 x 值来获得以下内容(但它仍然不起作用,小提琴):

#http://jsfiddle.net/JakobJingleheimer/Z5UFg/3/
[ { label:"coffee",  data:[ [7, 1659] ] },
  { label:"cocoa",  data:[ [7, 717] ] },
  { label:"tea",  data:[ [7, 206] ] }
]
#http://jsfiddle.net/JakobJingleheimer/Z5UFg/2/
[ { label:"coffee",  data:[ [0, 1659] ] },
  { label:"cocoa",  data:[ [1, 717] ] },
  { label:"tea",  data:[ [2, 206] ] }
]

如果我去掉对象性(例如,标签),它会起作用(但我需要弄清楚为什么f_opts.series.stack=true不起作用 - 我认为,因为所有 3 个条都是蓝色的,所以它将所有三个条视为同一个系列): v4

更新 2这些应该在 2 个不同的地方吗?我的意思是标签+数据数组对象是否应该在选项对象中,并且数据也应该在数据数组中?该文档有点难以弄清楚,因为它从未说明父对象是什么。

4

2 回答 2

1

不同之处在于您的数据点仅包含一个值,而 Flot 需要 [x, y] 对。查看文档的数据格式部分了解更多信息。

[f_data]编辑:即使 f_data 已经是一个系列数组,您对 $.plot 的调用也看起来像。看起来这就是你的问题的当前原因。

如果您遇到更多问题,您真的应该尝试将您的代码缩减为一个更简单的示例并从那里开始工作。这已经从一个问题变成了一个调试会话。

于 2012-10-01T11:35:06.437 回答
1

我相信这个版本的小提琴可能是你想要做的。

问题在于您将其f_data视为单个对象 {} 而不是对象数组,特别是系列对象。(您可以通过在情节调用中将其强制转换为数组来解决此问题[f_data],但这会将您限制为单个系列。)。您想要做的而不是设置f_data = tmp是将完整的系列对象作为其数组推f_data入:tmpdata

f_data.push({label:cat, stack:true, data:tmp});

正如您在我的示例中看到的那样,每个系列对象(f_data数组中的每个元素)都有自己的数据和标签。

您没有看到任何堆叠工作的原因有两个:

  1. 您需要包含jquery.flot.stack.js文件才能获得堆叠功能。(我在小提琴中添加了链接资源。)
  2. 堆叠只对多个系列有意义。您的“深度”视图将 3 个重叠数据点添加到单个系列,而不是创建 3 个单独的系列,每个系列有 1 个数据点。

我相信我的示例达到了您的目标。让我知道我是否弄错了。我用 //NEW 标记了我添加的新行以突出显示更改。

于 2012-10-04T06:17:49.557 回答