2017-06-02 127 views
1

我正在使用谷歌图表,这里是我的饼图代码...我想使用背景重复图片而不是颜色。这可能与谷歌图表?谷歌饼图饼图背景图片

google.charts.load('current', {'packages':['corechart']}); 
      google.charts.setOnLoadCallback(drawChart); 
      function drawChart() { 
       var data = google.visualization.arrayToDataTable([ 
        ['Task', 'Hours per Day'], 
        ['Work',  1], 
        ['Eat',  1], 
        ['Commute', 1], 
        ['Watch TV', 1], 
        ['Sleep', 1] 
       ]); 

       var options = { 
        pieSliceBorderColor : 'none', 
        chartArea:{left:5,top:5,width:390,height:390}, 
        enableInteractivity:false, 
        pieStartAngle:30, 
        pieHole: 0.6, 
        slices: { 
         0: { color: 'brown', offset: 0.01 }, 
         1: { color: 'brown', offset: 0.01 }, 
         2: { color: 'brown', offset: 0.01 }, 
         3: { color: 'brown', offset: 0.01 }, 
         4: { color: 'brown', offset: 0.01 }, 

        } 
       }; 

       var chart = new google.visualization.PieChart(document.getElementById('piechart')); 

       options.slices[sliceCount].color = 'transparent'; 
       chart.draw(data, options); 


      } 
+0

你的意思是替换图片的颜色,或整体图表的背景是什么? – WhiteHat

+0

图片只有whitehat – Lovestoned

回答

0

没有规范填写的选项洗净切片,用重复的图像

然而,它完成绘制

'ready'事件后,您可以修改图表的SVG,

创建图像pattern并添加到svg defs

然后替换图表元素上的'fill'属性t帽子应具有图像

饼图切片通常与<path>元件
绘制当仅存在一个切片(100%),一个<rect>元件用于
图例画有<circle>

记住,如果您需要创建图表的图像,
使用方法时这些自定义修改将不起作用 - >getImageURI

请参阅以下工作s nippet ...

google.charts.load('current', { 
 
    callback: drawChart, 
 
    packages: ['corechart'] 
 
}); 
 

 
function drawChart() { 
 
    var data = google.visualization.arrayToDataTable([ 
 
    ['Task', 'Hours per Day'], 
 
    ['Work',  1], 
 
    ['Eat',  1], 
 
    ['Commute', 1], 
 
    ['Watch TV', 1], 
 
    ['Sleep', 1] 
 
    ]); 
 

 
    var options = { 
 
    pieSliceBorderColor: 'none', 
 
    pieSliceText: 'none', 
 
    chartArea: { 
 
     bottom: 12, 
 
     left: 12, 
 
     top: 12, 
 
     width: 390, 
 
     height:390 
 
    }, 
 
    enableInteractivity: false, 
 
    pieStartAngle: 30, 
 
    pieHole: 0.6, 
 
    slices: { 
 
     0: { color: 'brown', offset: 0.1 }, 
 
     1: { color: 'brown', offset: 0.1 }, 
 
     2: { color: 'brown', offset: 0.1 }, 
 
     3: { color: 'brown', offset: 0.1 }, 
 
     4: { color: 'brown', offset: 0.1 }, 
 
    } 
 
    }; 
 

 
    var container = $('#piechart')[0]; 
 
    var chart = new google.visualization.PieChart(container); 
 

 
    google.visualization.events.addListener(chart, 'ready', function() { 
 
    // create image pattern 
 
    var svgNS = $('svg')[0].namespaceURI; 
 
    var pattern = document.createElementNS(svgNS, 'pattern'); 
 
    pattern.setAttribute('id', 'whiteHat'); 
 
    pattern.setAttribute('patternUnits', 'userSpaceOnUse'); 
 
    pattern.setAttribute('width', 16); 
 
    pattern.setAttribute('height', 16); 
 
    var image = document.createElementNS(svgNS, 'image'); 
 
    image.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', 'http://findicons.com/files/icons/512/star_wars/16/clone_old.png'); 
 
    image.setAttribute('x', 0); 
 
    image.setAttribute('y', 0); 
 
    image.setAttribute('width', 16); 
 
    image.setAttribute('height', 16); 
 
    pattern.appendChild(image); 
 
    $('#defs')[0].appendChild(pattern); 
 

 
    // add image to pie slices 
 
    $('svg path').attr('fill', 'url(#whiteHat)'); 
 

 
    // add image to legend circles 
 
    $('svg circle').attr('fill', 'url(#whiteHat)'); 
 

 
    // test chart image 
 
    $(container.parentNode).append('<img alt="Chart" src="' + chart.getImageURI() + '">'); 
 
    }); 
 
    chart.draw(data, options); 
 
}
div { 
 
    padding: 6px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div>piechart</div> 
 
<div id="piechart"></div> 
 
<div>image</div>

+0

伟大的作品......非常感谢whitehat ......但对我来说还有另一个问题......我没有写在我的问题......如果我想使一个切片背景透明,以及其他与图像? – Lovestoned

+0

你可以从这个链接看到我想要的:http://360kreatif.com/ersen/efektler/gog.asp我想使用背景图片而不是棕色的切片...我试图用你的代码做到这一点,但是我不能发送即时值正确,因为路径不是循环顺序...你可以看到我的网页与你的代码从这个链接:http://360kreatif.com/ersen/efektler/ – Lovestoned

+0

svg dom中的切片应该在相同顺序如用于绘制图表的数据表 – WhiteHat