首页 > 解决方案 > 删除 Yaxis Linechart -Primefaces 中的十进制值

问题描述

我正在使用带有 jsf/primefaces 的 javaEE 构建一个 Web 应用程序。

我做了这个代码来显示一个折线图,但问题是图表中 y 轴的值是十进制的,它们从 0.5,1,1.5 开始......我试图将值 Arraylist 的类型设置为 Integer 但它没有不起作用,因为 setData 函数必须始终将 Number 类型作为参数。

package managedBean;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;

import org.primefaces.model.chart.Axis;
import org.primefaces.model.chart.AxisType;
import org.primefaces.model.chart.LineChartSeries;
import org.primefaces.model.charts.ChartData;
import org.primefaces.model.charts.line.LineChartDataSet;
import org.primefaces.model.charts.line.LineChartModel;
import org.primefaces.model.charts.line.LineChartOptions;
import org.primefaces.model.charts.optionconfig.title.Title;

import model.ControleVoyage;
import dao.ControleVoyageDao;
@ManagedBean(name = "chartJsViewVoyage")
public class chartJsViewVoyage {
    private LineChartModel lineModel;
    private List<Date> dateVoyageControle;

    @PostConstruct
    public void init() {
        createLineModel();
    }
     public void createLineModel() {
            lineModel = new LineChartModel();
            ChartData data = new ChartData();
            LineChartDataSet dataSet = new LineChartDataSet();
            List<Number> values = new ArrayList<>();
            /*
            ArrayList<Long> coutControlPerDate = new ArrayList();
            coutControlPerDate = (ArrayList<Long>) new dao.ControleLigneDao().getCountControleLign();
            for(int i=0; i<coutControlPerDate.size(); i++) {
                values.add(coutControlPerDate.get(i));
             }
             */
            List<ControleVoyage> listvoyage = new ArrayList();
            listvoyage = new dao.ControleVoyageDao().getAll();
            for(int i=0; i<listvoyage.size(); i++) {
                values.add(listvoyage.get(i).getVoyageControlee().getIdVoyage());
             }

            System.out.println("Count Voyage list");
            System.out.println(values);
            dataSet.setData(values);


            dataSet.setFill(false);
            dataSet.setLabel("Voyages controlée");
            dataSet.setBorderColor("rgb(75, 192, 192)");
            dataSet.setLineTension(0.1);
            data.addChartDataSet(dataSet);

            List<Date> dateVoyageControle = new dao.ControleVoyageDao().getDateControleVoyage();
            List<String> labels = new ArrayList<>();

            for(int i=0; i<dateVoyageControle.size(); i++) {
                labels.add(dateVoyageControle.get(i).toString());
             }
            System.out.println("date list");
            System.out.println(labels);
            data.setLabels(labels);

            //Options
            LineChartOptions options = new LineChartOptions();        
//          Title title = new Title();
//          title.setDisplay(true);
//          title.setText("Line Chart");
//          options.setTitle(title);

            lineModel.setOptions(options);
            lineModel.setData(data);

        }


         public LineChartModel getLineModel() {
                return lineModel;
            }

        public void setLineModel(LineChartModel lineModel) {
            this.lineModel = lineModel;
        }

}

标签: javajsfprimefaceschart.jslinechart

解决方案


yAxis.ticks.stepSize: 1您可以通过调用方法来定义图表选项CartesianLinearTicks.setStepSize(Number stepSize)

在您的代码中,这可能如下所示:

LineChartOptions options = new LineChartOptions();
CartesianScales cScales = new CartesianScales();
CartesianLinearAxes linearAxes = new CartesianLinearAxes();
CartesianLinearTicks ticks = new CartesianLinearTicks();
ticks.setBeginAtZero(true);
ticks.setStepSize(1);
linearAxes.setTicks(ticks);
cScales.addYAxesData(linearAxes);
options.setScales(cScales);

推荐阅读