如何移除PrimeFaces V8 HorizontalBarChartModel水平条形图下方的轴
移除PrimeFaces水平条形图的X轴(下方标尺)
需求:使用org.primefaces.model.charts.hbar.HorizontalBarChartModel实现的水平条形图,需要移除图表下方的X轴(包含刻度和轴线)。
现有实现代码:
private void createComparativoPorTransportadora() { this.comparativoPorTransportadora = new HorizontalBarChartModel(); ChartData data = new ChartData(); HorizontalBarChartDataSet hbarDataSet = new HorizontalBarChartDataSet(); hbarDataSet.setLabel("Entregas"); List<Number> values = new ArrayList<>(); for (int i = 11; i >= 0; i--) { values.add(65 - 3 + i); } hbarDataSet.setData(values); List<String> bgColor = new ArrayList<>(); for (int i = 0; i < 12; i++) { bgColor.add("#008C00"); } hbarDataSet.setBackgroundColor(bgColor); List<String> borderColor = new ArrayList<>(); for (int i = 0; i < 12; i++) { borderColor.add("#008C00"); } hbarDataSet.setBorderColor(borderColor); hbarDataSet.setBorderWidth(2); data.addChartDataSet(hbarDataSet); List<String> labels = new ArrayList<>(); for (int i = 0; i < 12; i++) { if (i <= 9) { labels.add("TRANSPORTADORA "+i); } if (i > 9) { labels.add("TRANSPORTADORA "+i); } } data.setLabels(labels); this.comparativoPorTransportadora.setData(data); // Options BarChartOptions options = new BarChartOptions(); CartesianScales cScales = new CartesianScales(); CartesianLinearAxes linearAxes = new CartesianLinearAxes(); CartesianLinearTicks ticks = new CartesianLinearTicks(); ticks.setBeginAtZero(true); linearAxes.setTicks(ticks); cScales.addXAxesData(linearAxes); options.setScales(cScales); Legend legend = new Legend(); legend.setDisplay(false); options.setLegend(legend); this.comparativoPorTransportadora.setOptions(options); }
图表截图:
解决方案
要移除下方的X轴,只需在X轴配置对象中添加显示关闭的设置,还可同步隐藏对应网格线让图表更整洁。修改后的核心代码如下:
// Options BarChartOptions options = new BarChartOptions(); CartesianScales cScales = new CartesianScales(); CartesianLinearAxes linearAxes = new CartesianLinearAxes(); // 关闭X轴的整体显示(含轴线、刻度、标签) linearAxes.setDisplay(false); CartesianLinearTicks ticks = new CartesianLinearTicks(); ticks.setBeginAtZero(true); linearAxes.setTicks(ticks); // 隐藏X轴对应的横向网格线(可选,按需添加) CartesianGrid grid = new CartesianGrid(); grid.setDisplay(false); linearAxes.setGrid(grid); cScales.addXAxesData(linearAxes); options.setScales(cScales); Legend legend = new Legend(); legend.setDisplay(false); options.setLegend(legend); this.comparativoPorTransportadora.setOptions(options);
修改说明:
linearAxes.setDisplay(false):直接关闭整个X轴的显示,包括轴线、刻度线和刻度标签。- 网格线隐藏:通过
CartesianGrid设置setDisplay(false),可以移除X轴对应的横向网格线,若需要保留网格线可省略这部分代码。
修改后,图表下方的标尺(X轴)会完全被移除,满足需求。
内容的提问来源于stack exchange,提问作者Dev_Edimar FUll stack
相关产品推荐
相关产品推荐

