在 Observable Plot 中,如何从 bin() 转换 sort/order 堆栈?

In Observable Plot, how to sort/order the stack from a bin() transform?

我正在使用 Observable 的新 Plot library. It's not too bad coming from Vega and D3, but I cannot find or figure how to order the resulting stacked bars from the Plot.binX() 中的堆叠条形图。

我今天的实际标记是这样的:

Plot.rectY(hourlyUsageData, Plot.binX({
      y: "sum", 
      title: bin => bin[0].Name
    }, {
      x: d => d3.timeHour.count(d3.timeDay(d.DateTime), d.DateTime),
      y: d => d.kWh,
      thresholds: 24,
      fill: "Name",
      //order: "sum",
      //reverse: true
    }))

Plot.binX() 效果很好,生成了一个图表,其中堆栈根据输入顺序进行排序。

我希望根据总和对堆栈进行排序,事实上,如果我为 order 添加 Plot.stack 选项(参见上面的注释行),我可以按总和排序:

关闭!现在我只需要颠倒顺序。我假设,因为我可以使用 order 选项,也许我也可以使用 reverse 选项(参见上面的注释行)。 这似乎行不通

我的第二个假设是,因为这些转换应该是“可组合的”,所以我应该能够将我的 binXstackY 组合起来,但我找不到一个例子这样的构图。我试过 Plot.stackY(Plot.binX({...}, { ... order:"sum", reverse:true }) 和类似的变体,但 它们似乎也不起作用

总而言之,我很想知道如何在使用 binX 的同时控制堆叠条形图中的堆叠顺序。谢谢!

谢谢。似乎有一个错误,{order} 选项被 bin 转换白白消耗了。我们会尽力解决这个问题。同时,您可以像这样将它添加到 bin 转换“外部”:

Plot.rectY(data,
  Plot.stackY({
    ...Plot.binX(
      { y: "count" },
      { x: "body_mass", fill: "species", order: "sum" }
    ),
    reverse: true
  })
).plot()

解决此问题的拉取请求:https://github.com/observablehq/plot/pull/439