2

我正在使用 Python 中的 Vincent 创建一个 StackedBar 可视化项。数据来自 pandas 数据框,每列代表一个百分比,每行总和为 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  
    }

[...]

4

1 回答 1

2

问题是文森特和维加使用稍微不同的命名约定,这在文森特文档中没有明确说明。

Vega 在他们的文档 [1] 上有“domainMax”,而您需要定位的 Vincent 属性是“domain_max”,可在 Scales.py [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

于 2013-12-12T06:47:38.427 回答