如何更改primefaces多系列条形图的颜色

如何更改primefaces多系列条形图的颜色,primefaces,charts,jqplot,Primefaces,Charts,Jqplot,我有一个多系列的Primefaces p:chart(BarChartModel),我正在尝试更改多系列条形图的默认颜色 我的p:图表代码是: <p:chart type="bar" model="#{performanceStaffController.genderChartModel}" rendered="#{performanceStaffController.genderChartModel != null}" style="he

我有一个多系列的Primefaces p:chart(BarChartModel),我正在尝试更改多系列条形图的默认颜色

我的p:图表代码是:

<p:chart type="bar" model="#{performanceStaffController.genderChartModel}" 
            rendered="#{performanceStaffController.genderChartModel != null}"
            style="height:400px"
            styleClass="center-block">
    <h:outputScript>
        function chartExtender() {
            this.cfg.seriesDefaults.rendererOptions.varyBarColor = true;
        }
    </h:outputScript>
</p:chart>
虽然此代码适用于具有单个系列的条形图,但对于多个系列,它不会产生所需的结果

附加当前显示方式的图片

我需要的是A、B、C区的男孩酒吧用橙色,女孩酒吧用绿色

在Stackoverflow中遇到了许多与此主题相关的其他示例,但它们都有一个系列。请建议如何以简单的方式为多系列实现这一点。希望这不是复制品

添加更多详细信息:

从中获得了有关如何使用jqplot的更多信息

我现在的代码是:

<p:chart type="bar" model="#{performanceStaffController.genderChartModel}" 
            rendered="#{performanceStaffController.genderChartModel != null}"
            style="height:400px"
            styleClass="center-block">
    <h:outputScript>
        function chartExtender() {
            this.cfg.seriesDefaults.rendererOptions.varyBarColor = true;
            this.cfg.series = 
                            [
                            {seriesColors: ["#FFCC33", "#FFCC33", "#FFCC33", "#FFCC33", "#FFCC33", "#FFCC33", "#FFCC33", "#FFCC33", "#FFCC33", "#FFCC33"]}, 
                            {seriesColors: ["#77933c", "#77933c", "#77933c", "#77933c", "#77933c", "#77933c", "#77933c", "#77933c", "#77933c", "#77933c"]}
                            ]
        }
    </h:outputScript>
</p:chart>
现在问题不同了


标签名称和图例颜色被弄乱了,尽管这些值是在bean中设置的,并且以前工作正常。看起来this.cfg.series会覆盖其中的所有其他值。令人惊讶的是,图例颜色不会根据图表栏自动拾取-它至少可以拾取前两个!!看起来没有简单的解决方案来实现所需的目标

您应该设置每个chartseries的组值,而不是使用“ChartSeriesColor”属性来更改条形图的颜色。如果只为组多系列设置一个值,则颜色将相同。所以设置每个图表系列的组值。我这样解决了这个问题。

@Kukeltje,这是答案

         ChartSeries A = new ChartSeries();
         ChartSeries B = new ChartSeries();
         A.setLabel("A");
         B.setLabel("B");

             A.set("1", 1);
             B.set("1", 2);

         model.addSeries(A);
         model.addSeries(B);
        genderChartModel.addSeries(boys);
        genderChartModel.addSeries(girls);

        genderChartModel.setSeriesColors("ff9933, 77933c");

        genderChartModel.setTitle("");
        genderChartModel.setLegendPosition("e");
        genderChartModel.setLegendPlacement(LegendPlacement.OUTSIDEGRID);

我已经更改了你问题的标签。这有助于你找到答案吗?谢谢你的标签,非常感谢。仍然找不到任何与多系列相关的内容。不在通过google查询jqplot和多系列的内容中?当然。我会检查的。看起来它不像是用简单的方法为每个系列设置颜色那样简单。我还没有使用jqplot,所以不确定代码放在什么地方,等等。我将进行基本阅读并尝试实现它。再次感谢。我做了更多的研究,添加了更多的细节和上面的另一个屏幕截图。然而,最终的要求仍然没有得到满足。请建议一个简单的方法来实现这一点,如果有的话。感谢你在这方面的时间。我不确定这是否是你所说的。{seriesColors:[“#FFCC33”]},{seriesColors:[“#77933c”]}我尝试过这个方法,但只有第一组条形图反映了这种颜色,随后的一组条形图反映了默认颜色。请你单独阐述/分享这段代码好吗。谢谢.lineModel2.setSeriesColors(“088A29,DF0101”);lineModel1.SetSeriesColor(“088A29,DF0101”);lineModel2.SetSeriesColor(“088A29,DF0101”);lineModel1.SetSeriesColor(“088A29,DF0101”);不要为此使用扩展器。使用primefaces图表属性。但你必须为每个系列设置相同的组值。“太棒了,就像一个符咒。为了大家的利益,下面的代码就足够了。genderChartModel.SetSeriesColor(“FF993377933C”);不需要this.cfg.seriesDefaults.renderOptions.varyBarColor=true;这是正确的答案,您以前的答案将图表系列保留为primefaces固定的默认颜色。
         ChartSeries A = new ChartSeries();
         ChartSeries B = new ChartSeries();
         A.setLabel("A");
         B.setLabel("B");

             A.set("1", 1);
             B.set("1", 2);

         model.addSeries(A);
         model.addSeries(B);
        genderChartModel.addSeries(boys);
        genderChartModel.addSeries(girls);

        genderChartModel.setSeriesColors("ff9933, 77933c");

        genderChartModel.setTitle("");
        genderChartModel.setLegendPosition("e");
        genderChartModel.setLegendPlacement(LegendPlacement.OUTSIDEGRID);