Добавление свойства domainMax к существующей визуализации Vega с помощью Vincent

Я создаю StackedBar, используя Vincent в Python. Данные взяты из фрейма данных pandas, где каждый столбец представляет собой процент, а сумма каждой строки равна 100%.

Винсент / Вега пытается быть полезным и добавляет буфер к оси Y, чтобы он достиг максимума в 110 (%), когда я хочу быть 100.

Мне нужно добавить свойство «domainMax» в грамматике для шкалы Y, но я не могу понять, как использовать PropertySet Винсента или аналогичные команды, чтобы добавить это после импорта фрейма данных Pandas.

Вот пример данных с добавлением 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  
    }

[...]


person Phil Sheard    schedule 11.12.2013    source источник


Ответы (1)


Проблема заключалась в том, что Винсент и Вега использовали немного разные соглашения об именах, и это не было явно в документах Винсента.

Vega имеет «domainMax» в своих документах [1], тогда как свойство 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/Весы

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

person Phil Sheard    schedule 12.12.2013
comment
Я должен быть более точным в документах Винсента по этому поводу - все, что в Vega в верблюжьем корпусе, вместо этого было переведено на python с подчеркиванием. Кроме того, перед любыми параметрами Vega, которые являются зарезервированными словами в Python, стоит символ подчеркивания. - person Rob Story; 12.12.2013
comment
Спасибо за комментарий @RobStory - ценю ясность. Дайте мне знать, если я могу что-то сделать для поддержки, я думаю, что в целом это отличная библиотека. - person Phil Sheard; 13.12.2013