Как добавить текстовое поле к символу - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь добавить текстовую метку к узлам в примере force-direct-layout на странице github vega.

Я преобразовал символьную метку в групповую метку и переместил часть «кодировать» в дочернюю «символьную» метку. В этой новой групповой метке я теперь также добавляю текстовую метку, которой я даю имя узла.

Это метка узлов, части "on" и "transform" не указаны, потому что они не изменены.

{
      "name": "nodes",
      "type": "group",
      "zindex": 1,
      "from": {
        "data": "node-data"
      },
      "marks": [
        {
          "type": "symbol",
          "encode": {
            "enter": {
              "fill": {
                "scale": "color",
                "field": "group"
              },
              "stroke": {
                "value": "white"
              }
            },
            "update": {
              "size": {
                "signal": "2 * nodeRadius * nodeRadius"
              },
              "cursor": {
                "value": "pointer"
              }
            }
          }
        },
        {
          "type": "text",
          "interactive": false,
          "encode": {
            "enter": {
              "fill": {
                "value": "black"
              },
              "fontSize": {
                "value": 12
              },
              "align": {
                "value": "center"
              },
              "text": {
                "field": "name"
              },
              "y": {
                "value": -5
              }
            }
          }
        }
      ],
      "on": [...],
      "transform": [...]
    }

Ожидается увидеть имя узла над каждым узлом, но текст И символ станет невидимым.

Шаги для воспроизведения

  • Создайте тип "группа", добавьте массив "marks", добавьте объект метки с типом "symbol" в этот массив меток
    • -> узлы по-прежнему показывают
  • Переместить часть кодирования во вложенную группу символов
    • -> узлы исчезают
  • Добавление текстовой метки также ничего не делает

У меня есть догадка, что это свойство "field", которое скрывается, когда вы пытаетесь вложить его, сохраняя данные в родительском элементе, потому что текстовая метка отображается в группе, когда я задаю ей фиксированное значение, но я могу ' Кажется, я понял, как заставить это работать. (Я думал, что это так, потому что в документах говорится, что дочерняя метка автоматически получает родительские данные при пропуске поля данных)

1 Ответ

0 голосов
/ 11 января 2019

Внутри группы вы должны использовать {"parent": <field_name>} для ссылки на поле. Например, для ссылки на поле «группа» в родительском использовании:

"field": {"parent": "group"}}

См. Пример здесь .

...