java - 删除 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;
}
}
解决方案
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);
推荐阅读
- mysql - 我们可以将 INT 加入 MySQL 中的 Varchar 吗?
- xml - 在 SSRS 中使用 XML 显示和解析列中的数据
- c++ - 包含参考变量的对象的大小
- python - Cat Facts API discord.py
- kartik-v - 如何在 Kartik 导出菜单中导出数据的标题前添加图像>
- python - 将python文件转换为exe时有没有办法最小化命令提示符
- react-native - 为什么 React Native aspectRatio 在视频元素上被忽略?
- flutter - 用于实现这种布局的最佳颤振小部件是什么?
- javascript - Keydown 事件在 Javascript 中不起作用
- ansible - 如何告诉 Ansible 在任务中包含本地主机