2017-06-02 154 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