2013-04-24 47 views
0

我使用來自道場製圖的ThreeD主題顯示圖形。 當我修改數據以便我可以爲圖中某些 條顯示不同的顏色時,我將失去3D外觀。對於ThreeD他們改變道場製圖上的顏色ThreeD主題

默認的顏色是紅色

{Y: 「15」,提示: 「15個報警信息」,填寫: '黃'}

添加 '填充:黃' 上的數據項的變化酒吧變黃, 但我失去了3D的外觀。

關於改變主色調和保持3D外觀的最佳方式的任何想法?

回答

0

我能夠抓住從ThreeD.js的代碼,並把它應用到我的應用程序來實現:

var colors = ["#f00", "#0f0", "#00f", "#ff0", "#0ff", "#f0f", "dojox/charting/themes/common"]; 
var defaultFill = {type: "linear", space: "shape", x1: 0, y1: 0, x2: 100, y2: 0}; 
    // 3D cylinder map is calculated using dojox.gfx3d 
var cyl3dMap = [ 
     {o: 0.00, i: 174}, {o: 0.08, i: 231}, {o: 0.18, i: 237}, {o: 0.30, i: 231}, 
     {o: 0.39, i: 221}, {o: 0.49, i: 206}, {o: 0.58, i: 187}, {o: 0.68, i: 165}, 
     {o: 0.80, i: 128}, {o: 0.90, i: 102}, {o: 1.00, i: 174} 
     ]; 

var hiliteIndex = 2; 
var hiliteIntensity = 100; 
var lumStroke = 50; 
var cyl3dFills = ArrayUtil.map(colors, function(c){ 
    var fill = lang.delegate(defaultFill); 
    var colors = fill.colors = gradientGenerator.generateGradientByIntensity(c, cyl3dMap), 
     hilite = colors[hiliteIndex].color; 
     // add highlight 
     hilite.r += hiliteIntensity; 
     hilite.g += hiliteIntensity; 
     hilite.b += hiliteIntensity; 
     hilite.sanitize(); 
     return fill; 
}); 

當我創建用於將圖表數據的JSON字符串,我使用cyl3dFill [X]設置顏色:

{y: "10", tooltip: "10 Alarms", fill: cyl3dFill[3]} //Sets 3D Yellow fill 

如果填充不被添加到該數據記錄,默認顏色被假定(紅)。 不知道這是不是一個壞方法,但我喜歡它....

不知道下一個方法與三維主題,但它看起來像它改變了主題的顏色。不能得到的方法工作...

https://dojotoolkit.org/api/dojox/charting/themes/ThreeD

0

只需基於ThreeD創建一個新主題,並根據要使用的顏色更改顏色變量。 我建議你:

+0

感謝您的信息菲利普!我沒有創建自己的主題文件,而是從ThreeD.js中獲取代碼,並將JSON字符串中每個圖形欄所需的顏色應用。請參閱下面的文章... – GoinOff 2013-04-25 16:10:35

+1

克隆該文件允許您在其他地方重複使用該主題,而不是在每次要應用該特定主題時進行復制/粘貼... – Philippe 2013-04-25 18:31:57

+0

感謝您對sitepen的鏈接,超級有用。現在也要製作我自己的定製主題。回到實驗室.... – GoinOff 2013-04-25 19:56:16