При использовании cytoscape.js узлы отображаются вверх ногами
Я работал с сетями от 80 до 1000 узлов, когда понял, что узлы отображаются с ног на голову.
Я имею в виду, первый квадрант был нарисован там, где должен быть четвертый квадрант. Поэтому я решил работать только с четырьмя узлами и посмотреть, что получилось, в результате получилось следующее: Каждый узел принадлежит другому квадранту. Которые являются (50,50);(-50,50);(-50,-50) и (50,-50).
Я использую "предустановленную" компоновку, которая должна правильно их отображать (как в декартовой плоскости). Я работаю только с последней версией "cytoscape.min.js".
Javascript в вопросе:
var cy = window.cy = cytoscape({
container: document.getElementById('cy'),
layout: { name: 'preset'},
elements: [
{data: { id: '(0,0)'}, position: { x: 0, y: 0 }},
{data: { id: '++'}, position: { x: 50, y: 50 }},
{data: { id: '+-'}, position: { x: 50, y: -50 }},
{data: { id: '--'}, position: { x: -50, y: -50 }},
{data: { id: '-+'}, position: { x: -50, y: 50 }},
],
style: [
{
selector: 'node',
style: {
'content': 'data(id)',
'width': '2',
'height': '2',
'color': '#000',
'font-size': '10',
'opacity': 0.9,
'shape': 'ellipse',
'z-index': '9999'
}
},
],
});
Теперь, это ожидаемое поведение, и я работаю с неправильной библиотекой? или я что-то упустил?
Я уже пробовал со всеми вариантами макета.
1 ответ
Компьютерная графика использует декартовы координаты, но ось Y инвертирована. Это просто соглашение на компьютерах.
Также обратите внимание, что панорамирование и масштабирование влияют на матрицу преобразования, так что начало координат не всегда одинаково на экране.
Увидеть