Primefaces5 如何更改图表中的背景颜色(纯java,无jqplot)
Primefaces5 How to change background color in chart (pure java, no jqplot)
我在 Primefaces5 中有一个图表并且工作正常,但我需要仅使用 java 代码更改背景颜色,没有 jqplot 代码。
默认颜色是浅色,但不是白色,我的用户想要白色。
如有任何建议,我们将不胜感激。谢谢!
这是我的代码(片段):
private void createBarModelsN()
{
graphic2 = initBarModelN();
graphic2.setTitle("");
// Indica la posicion del cuadrito con la leyenda de la serie
// null indica que no mostrara el cuadrito
graphic2.setLegendPosition( null );
graphic2.setShadow( false );
graphic2.setStacked( isStacked );
graphic2.setAnimate( true );
graphic2.setBarMargin( 20 );
graphic2.setBarPadding( 0 );
String strSeriesColor = "";
for(int i=0; i < numeroDeSeries; i++ )
{
strSeriesColor += arregloColoresDefault[i];
if( i < numeroDeSeries - 1 )
{
strSeriesColor += ",";
}
}
graphic2.setSeriesColors( strSeriesColor );
Axis xAxis = graphic2.getAxis(AxisType.X);
Axis yAxis = graphic2.getAxis(AxisType.Y);
// Para graficar porcentajes se requiere que el eje Y sea de 0 a 100
yAxis.setLabel( labelEjeY );
yAxis.setMax(100);
yAxis.setMin(0);
yAxis.setTickAngle( 0 );
yAxis.setTickCount( 11 );
yAxis.setTickInterval( "10" );
xAxis.setMin( getValorMinX());
xAxis.setMax( getValorMaxX());
xAxis.setTickInterval( "1" );
xAxis.setLabel( labelEjeX );
}
private BarChartModel initBarModelN()
{
BarChartModel model = new BarChartModel();
// Hago el for para obtener cada una de las series
for( int i=0; i < series.size(); i++ )
{
ChartSeries serieX = new ChartSeries();
int indexArreglo = 0;
for( int j=getValorMinX(); j <= getValorMaxX(); j++ )
{
if( arregloTempo != null && listNSeries != null && listNSeries.size() >= 1
&&
arregloTempo.length == ((ArrayList<Integer>)listNSeries.get(i)).size()
)
{
int valorX = ((ArrayList<Integer>)listNSeries.get(i)).get( indexArreglo );
int valorXTotal = arregloTempo[ indexArreglo ];
float valorY = 0.0f;
if( valorXTotal != 0 )
{
valorY = (valorX / (valorXTotal + 0.0f) ) * 100;
}
serieX.set( j , valorY );
}
indexArreglo++;
}
model.addSeries(serieX);
}
return model;
}
检查这个:Similar question about changing jQplot graphs。图形配置中有一个名为 background: '#fffdf6', // CSS color spec for background color of grid.
的参数
还有使用方法的例子。祝你好运。
自 Primefaces 5.1 以来,解决方案(由 jKick 在 link 上提供)有一个小的变化。
在 Primefaces 5.1 之前你可以这样做:
<p:lineChart extender="customExtender" value="..." />
从 Primefaces 5.1 开始,图表组件已被删除,取而代之的是 p:chart,扩展器 属性 现在需要在您的 Java 代码中设置:
LineChartModel lineChart = new LineChartModel();
lineChart.setExtender("customExtender");
这是你的扩展器Java脚本代码:
<script>
function customExtender () {
this.cfg.grid = {
background: '#FFF' //Set background to white
};
}
</script>
我在 Primefaces5 中有一个图表并且工作正常,但我需要仅使用 java 代码更改背景颜色,没有 jqplot 代码。
默认颜色是浅色,但不是白色,我的用户想要白色。
如有任何建议,我们将不胜感激。谢谢!
这是我的代码(片段):
private void createBarModelsN()
{
graphic2 = initBarModelN();
graphic2.setTitle("");
// Indica la posicion del cuadrito con la leyenda de la serie
// null indica que no mostrara el cuadrito
graphic2.setLegendPosition( null );
graphic2.setShadow( false );
graphic2.setStacked( isStacked );
graphic2.setAnimate( true );
graphic2.setBarMargin( 20 );
graphic2.setBarPadding( 0 );
String strSeriesColor = "";
for(int i=0; i < numeroDeSeries; i++ )
{
strSeriesColor += arregloColoresDefault[i];
if( i < numeroDeSeries - 1 )
{
strSeriesColor += ",";
}
}
graphic2.setSeriesColors( strSeriesColor );
Axis xAxis = graphic2.getAxis(AxisType.X);
Axis yAxis = graphic2.getAxis(AxisType.Y);
// Para graficar porcentajes se requiere que el eje Y sea de 0 a 100
yAxis.setLabel( labelEjeY );
yAxis.setMax(100);
yAxis.setMin(0);
yAxis.setTickAngle( 0 );
yAxis.setTickCount( 11 );
yAxis.setTickInterval( "10" );
xAxis.setMin( getValorMinX());
xAxis.setMax( getValorMaxX());
xAxis.setTickInterval( "1" );
xAxis.setLabel( labelEjeX );
}
private BarChartModel initBarModelN()
{
BarChartModel model = new BarChartModel();
// Hago el for para obtener cada una de las series
for( int i=0; i < series.size(); i++ )
{
ChartSeries serieX = new ChartSeries();
int indexArreglo = 0;
for( int j=getValorMinX(); j <= getValorMaxX(); j++ )
{
if( arregloTempo != null && listNSeries != null && listNSeries.size() >= 1
&&
arregloTempo.length == ((ArrayList<Integer>)listNSeries.get(i)).size()
)
{
int valorX = ((ArrayList<Integer>)listNSeries.get(i)).get( indexArreglo );
int valorXTotal = arregloTempo[ indexArreglo ];
float valorY = 0.0f;
if( valorXTotal != 0 )
{
valorY = (valorX / (valorXTotal + 0.0f) ) * 100;
}
serieX.set( j , valorY );
}
indexArreglo++;
}
model.addSeries(serieX);
}
return model;
}
检查这个:Similar question about changing jQplot graphs。图形配置中有一个名为 background: '#fffdf6', // CSS color spec for background color of grid.
还有使用方法的例子。祝你好运。
自 Primefaces 5.1 以来,解决方案(由 jKick 在 link 上提供)有一个小的变化。
在 Primefaces 5.1 之前你可以这样做:
<p:lineChart extender="customExtender" value="..." />
从 Primefaces 5.1 开始,图表组件已被删除,取而代之的是 p:chart,扩展器 属性 现在需要在您的 Java 代码中设置:
LineChartModel lineChart = new LineChartModel();
lineChart.setExtender("customExtender");
这是你的扩展器Java脚本代码:
<script>
function customExtender () {
this.cfg.grid = {
background: '#FFF' //Set background to white
};
}
</script>