我正在Python中使用Vincent创建StackedBar可视化。数据来自熊猫数据框,每一列代表一个百分比,每一行总计为100%

Vincent / Vega试图提供帮助,并在Y轴上添加了一个缓冲区,以便当我想成为100时最大达到110(%)。

我需要添加的属性是Y比例尺的语法中的“ domainMax”,但是在导入Pandas数据框后,我无法弄清楚如何使用Vincent的PropertySet或类似命令将其添加到其中。

这是手动添加domainMax的数据的示例,任何人都可以建议如何在Python中执行此操作

"scales": [
    {
      "domain": {
        "data": "table",
        "field": "data.idx"
      },
      "name": "x",
      "range": "width",
      "type": "ordinal"
    },
    {
      "domain": {
        "data": "stats",
        "field": "sum"
      },
      "name": "y",
      "nice": true,
      "range": "height",
      "type": "linear",
      "domainMax": 100
    }


[...]

最佳答案

问题在于Vincent和Vega使用的命名约定略有不同,而这在Vincent文档中并未明确规定。

Vega在其文档上具有“ domainMax” [1],而您需要定位的Vincent属性是在“ Scales.py”中找到的“ domain_max” [2]

因此解决方案是:chart.scales[ref].domain_max = value

在实践中:

chart = vincent.StackedBar(dataframe)
chart.scales[1].domain_max = 100
chart.display()


[1] https://github.com/trifacta/vega/wiki/Scales

[2] https://github.com/wrobstory/vincent/blob/master/vincent/scales.py#L77

10-06 10:36