Есть множество примеров , показывающих, как добавлять метки к визуализации графа и дерева, но я, вероятно, начинаю с этого как самый простой:
Вы не разместили ссылку на свой код, но я предполагаю, что node
ссылается на выбор элементов окружности SVG. Вы не можете добавлять текстовые элементы в элементы окружности, поскольку элементы окружности не являются контейнерами ; добавление текстового элемента в круг будет проигнорировано.
Обычно вы используете элемент G для группировки элемента окружности (или элемента изображения, как указано выше) и текстового элемента для каждого узла. Полученная структура выглядит так:
Gavroche
Используйте data-join для создания элементов G для каждого узла, а затем используйте selection.append , чтобы добавить круг и текстовый элемент для каждого. Что-то вроде этого:
var node = svg.selectAll(".node")
.data(nodes)
.enter().append("g")
.attr("class", "node")
.call(force.drag);
node.append("circle")
.attr("r", 4.5);
node.append("text")
.attr("dx", 12)
.attr("dy", ".35em")
.text(function(d) { return d.name });
. Один недостаток этого подхода состоит в том, что вы можете захотеть, чтобы метки были нарисованы поверх кругов. Поскольку SVG еще не поддерживает z-индекс, элементы рисуются в порядке документа; поэтому вышеприведенный подход заставляет метку нарисовать над ее окружностью , но ее можно нарисовать в других кругах . Вы можете исправить это, используя два объединения данных и создание отдельных групп для кругов и меток, например:
…
Gavroche
Valjean
…
И соответствующий JavaScript:
var circle = svg.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(nodes)
.enter().append("circle")
.attr("r", 4.5)
.call(force.drag);
var text = svg.append("g")
.attr("class", "labels")
.selectAll("text")
.data(nodes)
.enter().append("text")
.attr("dx", 12)
.attr("dy", ".35em")
.text(function(d) { return d.name });
Этот метод используемый в примере мобильных патентных костюмов (с дополнительным текстовым элементом, используемым для создания белой тени).
Если вы хотите отлаживать такое поведение, первым рефлексом, который нужно принять, является анализ сетевого трафика и заголовков HTTP. Благодаря этому вы бы увидели, что папки inc
и pages
заканчиваются кодом 403
(Forbidden). Вам нужно изменить разрешения на эти папки (и файлы рекурсивно, возможно).
bak
тестовый выход папки:
inc
(то же самое для файла pages
):
НО, с точки зрения SEO, что вы пытаетесь делать не хорошо. Вы должны сохранить ErrorDocument 404 /file_not_found
и удалить свои правила переадресации. Он автоматически отправляет код 404
(не найден) без изменения URL-адреса. Быстрое напоминание: изменение URL означает перенаправление, в вашем случае вы отправляете код 302
(Moved Temporarily) вместо 404
, что не является ожидаемым поведением.
Хорошо, это разрешилось благодаря ответу Джастина. Хотя, я точно не знаю, почему. Разрешения и права доступа к файлам во всех трех каталогах были идентичны. Итак, я до сих пор не знаю, почему один работал правильно, а другой 2 - нет. Не было разрешения или права собственности, вызывающего код статуса 403. Dirs были 755, а файлы были 644.
Но я пробовал делать разрешения для всех 3 этих дисков 700. После этого все переадресации работали, как ожидалось. Но это противоречит интуиции. Неправильное поведение давало код статуса 403 (запрещено). И затем, когда я изменил разрешения, чтобы каталог действительно запрещался, он перенаправляется с помощью параметра 302. Go. Но это работает.
Кстати, я бы сказал, если бы смог ответить на вопрос Джастина. Совет для анализа кода состояния поможет мне в будущем. Я не знал об этом.
позже отредактировал: я удалил все переадресации, и теперь я использую только права на файл. Я создал документы 404 и 403, и все работает нормально. Стоит отметить, что использование директивы ErrorDocument приводит к отправке с кодом 302. Но это должно найти SEO-мудрый, поскольку ни один из них не связан нигде. Все нормальные страницы имеют код состояния 200.