2016-04-09 3 views
2

Я добавление SVG-графики на основе моей диаграммы путем chart.renderer.image(), как показано на this jsfiddle example:Highcharts рендерер: цвет заливки внедренного SVG изображения

$(function() { 
    $('#container').highcharts({ 

     xAxis: { 
      categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
     }, 

     series: [{ 
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] 
     }] 

    }, function (chart) { // on complete 

    chart.renderer.image('https://cloud3squared.com/files/example.svg', 100, 100, 70, 70) 
      .add(); 
    }); 
}); 

В оригинальном SVG сам файл, я могу изменить цвет заливки графики в SVG со следующим:

style="fill:#ffffff;fill-opacity:1" 

это меняет его от черного до белого. Но я хотел бы иметь возможность устанавливать этот цвет динамически, в коде. Я пробовал разные пути без успеха. Есть идеи?

+0

Невозможно с изображением. –

+0

Но это не образ. Это SVG, с элементами, которые, как я надеюсь, динамически модифицируются либо при добавлении SVG, либо после. Например, что-то вроде http://stackoverflow.com/a/13225606/4070848 – drmrbrewer

+0

Имя функции подразумевает, что это изображение, и документация подтверждает, что это изображение: http://api.highcharts.com/highcharts#Renderer –

ответ

3

Если вы добавляете изображение с помощью Highcharts Renderer, изображение будет добавлено. Для того, чтобы добавить SVG элемент, который будет иметь возможность динамически изменять его атрибуты использовать другие методы Renderer, которые создают SVG элементы как:

и т.д.

Ваше изображение представляет собой набор путей , поэтому это должно быть легко сделать. Пример: http://jsfiddle.net/32Lqpe14/

Если вы хотите, вы можете добавить все элементы к таможне group.

EDIT: С помощью Highcharts Renderer можно воссоздать элементы SVG из оригинального SVG-изображения. Вы можете загрузить SVG динамически с помощью JQuery, но проблема CORS может быть проблемой, так что можно также использовать SVG из HTML:

Demo: (. Для получения дополнительной информации см комментарии ниже) http://jsfiddle.net/2mch6ja3/

+0

Однако, когда у вас есть (много) существующих графических файлов SVG, вы предлагаете, чтобы вы все порт из них в «нативные» команды на дорожках с большими картами? Есть ли способ использовать существующий SVG, каким-то образом внедряя этот SVG direct? – drmrbrewer

+0

@drmrbrewer К сожалению, в Highcharts нет API по умолчанию, который позволил бы включить внешний SVG в качестве части SVG диаграммы. Однако вы можете попробовать appendChild, если у вас есть SVG-элемент (ы) - дополнительная информация: http: // stackoverflow.com/questions/16488884/add-svg-element-to-existing-svg-using-dom –

+0

Как насчет того, чтобы придерживаться 'renderer.image()' и использовать что-то вроде этого: http://stackoverflow.com/a/11978996/4070848 (или это эквивалентное сообщение: http://stackoverflow.com/a/24933495/4070848) – drmrbrewer

Смежные вопросы