Это невозможно в настоящее время с nvd3.js. Всплывающая подсказка работает, потому что указанный вами элемент img
установлен в div
, который не содержится в элементе svg
. Это не работает для ярлыков легенды или диаграмм, поскольку они создаются с использованием элементов svg text
. Чтобы показать изображение в пределах графика svg
, нам нужно будет использовать элемент svg image
.
Мы могли бы построить элементы svg image
, если мы взломаем код nvd3.js. Вот схема того, что вы могли бы сделать, чтобы заставить легенду работать. Затем вы можете решить, хотите ли вы попробовать что-то подобное в коде nv.models.pie
для ярлыков диаграмм или если вы просто хотите установить chart.showLabels
в false
в конфигурацию диаграммы.
Добавить новый ключ в ваших данных, чтобы указать путь изображения:
var testdata = [
{
key: "<img src="+"./imgs/facebook.jpg"+">",
y: 1,
image_path: "./imgs/facebook.jpg"
},
{
key: "<img src="+"./imgs/twitter.jpg"+">",
y: 2,
image_path: "./imgs/twitter.jpg"
} ];
Update nv.models.legend
код, чтобы показать изображение:
seriesEnter.append('circle')
.style('stroke-width', 2)
.attr('class','nv-legend-symbol')
.attr('r', 5);
// Add an svg image into the legend
seriesEnter.append('image')
.attr('xlink:href', function(d) { return d.image_path})
.attr('height',20)
.attr('width',20)
.attr('y', '-10')
.attr('x', '8');
Update nv.models.legend
код не показывать ключ:
// Don't add the key value into the legend text
//series.select('text').text(getKey);
Обновить код nv.models.legend
рассмотреть ширину изображения при определении схемы легенды:
//seriesWidths.push(nodeTextLength + 28); // 28 is ~ the width of the circle plus some padding
//Include image width...
seriesWidths.push(nodeTextLength + 48);