我正在使用带有jsf / primefaces的javaEE构建Web应用程序。
i使此代码显示折线图,但问题是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;
}
}
您可以通过调用方法yAxis.ticks.stepSize: 1
来定义图表选项yAxis.ticks.stepSize: 1
。
在您的代码中,看起来可能如下:
CartesianLinearTicks.setStepSize(Number stepSize)