2012-01-23 240 views
4

我正在使用一個主題,但我想在圖表周圍設置背景顏色爲白色或透明或其他。在圖表中設置背景顏色

我想這個代碼:

var myTheme = dojox.charting.themes.PlotKit.orange; 

    myTheme.fill= "white"; 

    chart10.setTheme(myTheme); 


chart10.addPlot("default", { 
    type: "Pie", 
    labelOffset: -30, 
    radius: 150, 
    startAngle: 45, 
    font: "normal normal 10pt Tahoma", 
    fontColor: "black", 
    labelWiring: "grey", 
    labelStyle: "columns", 
    htmlLabels: true, 
    plotarea: { fill: "#000" } 
}); 

但這種代碼沒有工作,沒有改變是可見的。

如何設置顏色背景?

enter image description here

回答

8

我相信你必須同時設置chart.fill和plotarea.fill性能。

myTheme.chart.fill= "white"; 
    myTheme.plotarea.fill = "white"; 

如果你這樣做console.debug(myTheme)您可以檢查主題對象的所有屬性。在找到合適的人之前,我通常需要嘗試一下。

+3

謝謝,作品也透明背景。 –

1

我知道這是舊的,但我有一種情況,我在創建餅圖並需要更改餅圖背後的背景顏色。我試過這個解決方案,但它沒有工作,因爲我沒有分配一個主題。我是這樣創建的:

var pieChart = new Chart("myDIV"); 
pieChart.addPlot("default", {type: "Pie"}); 
pieChart.addSeries("Series A", pieString); 

我的pieString是我將變量組合在一起形成餅圖的地方。基本上,我串連一系列語句是這樣的:

{y:200, tooltip: "layer", color:"red", text: "myText"}

我加入這些字符串連接在一起,並把它分配給我的pieString變量。

當我設置我的圖表時,我在它後面得到了一個標準的白色背景,由於我想要它混合,所以對於我的彩色背景不起作用。有兩個矩形組成背景。您可以通過pieChart.fill = "something"更改較大和最遠的一個,但內部的一個沒有改變。

我爲我解決這個問題的方式就是這樣。

function ClearChartBackground() { 
    var sumDivRects = document.getElementById("chartDIV").getElementsByTagName("svg")[0].getElementsByTagName("rect"); //so I am getting the rectangles that are part of my chart div 

    var firstRect = sumDivRects[0]; 
    var secondRect = sumDivRects[1]; 
    firstRect.attributes.item(1).value = "0"; 
    secondRect.attributes.item(1).value = "0"; 
    //this drills down to the 'fill-opacity' attribute that can then be changed to make it transparent 


} 

正如您在我的照片中看到的,原始背景是白色的,在我的灰色背景下效果不佳。運行我的功能後,它變爲透明。

我發佈這個,因爲我花了相當長的時間來找出如何改變這一點,因爲我有Dojo爲我呈現它。我遇到了這篇文章,但是我沒有從中得到很多幫助,因爲我沒有做一個主題。

This is my bad clip showing the difference

-2

使用jQuery,你可以做這樣的事情:

$("#chartNode svg rect:eq(0)").attr("fill", "0"); 
$("#chartNode svg rect:eq(0)").attr("fill-opacity", "0"); 

所以,基本上您正在訪問的元素和手動更改屬性。這不是非常有效的方法,但它會做到這一點。

0
dojox.charting.themes.Claro.chart.fill = "#F1F1F0" 
dojox.charting.themes.Claro.plotarea.fill = "#F1F1F0" 
dojox.charting.themes.Claro.chart.stroke = "#F1F1F0" 

// Set the theme 
chart.setTheme(dojox.charting.themes.Claro);