如何更改primefaces多系列条形图的颜色
我有一个多系列的Primefaces p:chart(BarChartModel),我正在尝试更改多系列条形图的默认颜色 我的p:图表代码是:如何更改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
<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);