在dojo图表三维主题上更改颜色

在dojo图表三维主题上更改颜色,dojo,dojox.charting,Dojo,Dojox.charting,我正在使用dojo图表中的三维主题显示一个图形。 当我修改数据以便可以显示不同的颜色时 在图形中的条形图中,我失去了3D外观 他们的默认颜色是红色 {y:“15”,工具提示:“15个警报”,填充:“黄色”} 在数据项上添加“填充:黄色”会将条形图更改为黄色, 但我失去了3D外观 关于更改主主题颜色并保持3d外观的最佳方法的任何想法???只需基于三维创建一个新主题,并使用您想要使用的颜色更改颜色变量。 我建议你: 阅读这篇博文: 将dojox/charting/themes/ThreeD.js克

我正在使用dojo图表中的三维主题显示一个图形。 当我修改数据以便可以显示不同的颜色时 在图形中的条形图中,我失去了3D外观

他们的默认颜色是红色

{y:“15”,工具提示:“15个警报”,填充:“黄色”}

在数据项上添加“填充:黄色”会将条形图更改为黄色, 但我失去了3D外观


关于更改主主题颜色并保持3d外观的最佳方法的任何想法???

只需基于三维创建一个新主题,并使用您想要使用的颜色更改颜色变量。 我建议你:

  • 阅读这篇博文:
  • 将dojox/charting/themes/ThreeD.js克隆到您自己的主题文件中
  • 编辑新文件(只需修改顶部的“颜色”数组)
  • 使用新创建的主题

我可以通过从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
如果未将填充添加到数据记录中,则采用默认颜色(红色)。 不确定这是不是一个坏方法,但我喜欢它

不确定下一个方法对三维主题做了什么,但看起来它改变了主题的颜色。无法使该方法工作


谢谢您提供的信息,菲利普!!我没有创建自己的主题文件,而是从ThreeD.js中获取代码,并为JSON字符串中的每个图形栏应用我想要的颜色。请参阅下面的帖子…克隆该文件可以让您在其他地方重复使用该主题,而不是每次要应用该特定主题时都进行复制/粘贴…感谢指向sitepen的链接,非常有用。现在我也要做我自己的自定义主题了。回到实验室。。。。