Как избежать конфликта масштабирования на линейной диаграмме со слоем? - PullRequest
1 голос
/ 08 мая 2020

VEGA-lite не идеален, но очень хорош, и в целом для того, что выглядит как ошибка, есть обходной путь ... Итак, я предполагаю, что в этой «ошибке» у нас есть обходной путь.

((редактирование после ответа: это не настоящая ошибка, это «ошибка semanti c» на языке спецификации))

Странное поведение , «ошибка semanti c»: я использовал selection: { "grid": {"type":"interval", "bind":"scales"} } для увеличения, в тривиальном контексте, с простым mark: 'line'. Когда я добавляю layer, перестает работать .

    {
        title: "Número de registros por minuto (n_count normalizado)", 
        $schema: vglVers,
        data: { "url":"mySQLtable" },
        selection: { "grid": {"type":"interval", "bind":"scales"} }, // was working with simple mark
        //mark: 'line',
        width:340,
        encoding: {
          x: {"field": "instant", "type": "temporal"},
          y: {"field": "n_pmin", "type": "quantitative"},
          color: {"field": "symbol", "type": "nominal"}
        },
        layer: [
            {
              "mark": {"type": "line", "point": true},
              "transform": [{"filter": "datum.symbol == 'n_pmin'"}]
            },
            { "mark": {"type": "line"}, "transform": [{"filter": "datum.symbol != 'n_pmin'"}]  }
        ]
      }

Обходной путь: как @ jakevdp прокомментировал здесь , "выбор интервала должен добавляем в один из слоев «. Но

  1. Как сделать этот "выбор интервала"?

  2. Данные на моем графике не статичны c, мне нужен интервал который изменяется вместе с ним, поэтому нет смысла устанавливать интервал.

1 Ответ

1 голос
/ 08 мая 2020

«Выбор интервала», о котором я упоминал, - это определение выбора интервала в вашей диаграмме:

selection: { "grid": {"type":"interval", "bind":"scales"} }

Вы не можете объявить его в диаграмме верхнего уровня; вы должны объявить его на одном из уровней:

{
    title: "Número de registros por minuto (n_count normalizado)", 
    $schema: vglVers,
    data: { "url":"mySQLtable" },
    width:340,
    encoding: {
      x: {"field": "instant", "type": "temporal"},
      y: {"field": "n_pmin", "type": "quantitative"},
      color: {"field": "symbol", "type": "nominal"}
    },
    layer: [
        {
          "mark": {"type": "line", "point": true},
          "transform": [{"filter": "datum.symbol == 'n_pmin'"}],
          "selection": {"grid": {"type":"interval", "bind":"scales"}},
        },
        {
          "mark": {"type": "line"},
          "transform": [{"filter": "datum.symbol != 'n_pmin'"}]
        }
    ]
 }

Ваша проблема не является ошибкой, и мое решение не является обходным путем: схема vega-lite указывает, что выбор должен быть объявлен в единице spe c (т.е. отдельный слой).

...