如图所示,我想让下面X轴的日期 不要每个都显示怎么弄,想隔6个月显示一次。
// 初始化数据
ArrayList<BankTurnoverInfo> dataList = new ArrayList<BankTurnoverInfo>();
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年1月", 1));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年2月", 3));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年3月", 7));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年4月", 2));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年5月", 10));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年6月", 5));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年7月", 1));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年8月", 3));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年9月", 7));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年10月", 2));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年11月", 10));
dataList.add(new BankTurnoverInfo("中国工商银行", "2014年12月", 5));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年1月", 1));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年2月", 3));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年3月", 7));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年4月", 2));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年5月", 10));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年6月", 5));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年7月", 1));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年8月", 3));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年9月", 7));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年10月", 2));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年11月", 10));
dataList.add(new BankTurnoverInfo("中国工商银行", "2015年12月", 5));
dataList.add(new BankTurnoverInfo("中国银行", "2014年1月", 1));
dataList.add(new BankTurnoverInfo("中国银行", "2014年2月", 3));
dataList.add(new BankTurnoverInfo("中国银行", "2014年3月", 7));
dataList.add(new BankTurnoverInfo("中国银行", "2014年4月", 2));
dataList.add(new BankTurnoverInfo("中国银行", "2014年5月", 10));
dataList.add(new BankTurnoverInfo("中国银行", "2014年6月", 5));
dataList.add(new BankTurnoverInfo("中国银行", "2014年7月", 1));
dataList.add(new BankTurnoverInfo("中国银行", "2014年8月", 3));
dataList.add(new BankTurnoverInfo("中国银行", "2014年9月", 7));
dataList.add(new BankTurnoverInfo("中国银行", "2014年10月", 2));
dataList.add(new BankTurnoverInfo("中国银行", "2014年11月", 10));
dataList.add(new BankTurnoverInfo("中国银行", "2014年12月", 5));
dataList.add(new BankTurnoverInfo("中国银行", "2015年1月", 1));
dataList.add(new BankTurnoverInfo("中国银行", "2015年2月", 3));
dataList.add(new BankTurnoverInfo("中国银行", "2015年3月", 7));
dataList.add(new BankTurnoverInfo("中国银行", "2015年4月", 2));
dataList.add(new BankTurnoverInfo("中国银行", "2015年5月", 10));
dataList.add(new BankTurnoverInfo("中国银行", "2015年6月", 5));
dataList.add(new BankTurnoverInfo("中国银行", "2015年7月", 1));
dataList.add(new BankTurnoverInfo("中国银行", "2015年8月", 3));
dataList.add(new BankTurnoverInfo("中国银行", "2015年9月", 7));
dataList.add(new BankTurnoverInfo("中国银行", "2015年10月", 2));
dataList.add(new BankTurnoverInfo("中国银行", "2015年11月", 10));
dataList.add(new BankTurnoverInfo("中国银行", "2015年12月", 5));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年1月", 1));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年2月", 3));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年3月", 7));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年4月", 2));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年5月", 10));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年6月", 5));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年7月", 1));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年8月", 3));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年9月", 7));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年10月", 2));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年11月", 10));
dataList.add(new BankTurnoverInfo("中国招商银行", "2014年12月", 5));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年1月", 1));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年2月", 3));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年3月", 7));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年4月", 2));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年5月", 10));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年6月", 5));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年7月", 1));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年8月", 3));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年9月", 7));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年10月", 2));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年11月", 10));
dataList.add(new BankTurnoverInfo("中国招商银行", "2015年12月", 5));
// 绘图数据集
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
Random random = new Random(new Date().getTime());
for (BankTurnoverInfo bti : dataList) {
// 第一个参数:Y轴
// 第二个参数: 类别
// 第三个参数: X轴
dataSet.setValue(random.nextInt(70)+30, bti.getBankNm(), bti.getDate());
}
//如果把createLineChart改为createLineChart3D就变为了3D效果的折线图
JFreeChart chart = ChartFactory.createLineChart("图表标题", "X轴标题", "Y轴标题", dataSet,
PlotOrientation.VERTICAL, // 绘制方向
true, // 显示图例
true, // 采用标准生成器
false // 是否生成超链接
);
chart.getTitle().setFont(new Font("隶书", Font.BOLD, 20)); // 设置标题字体
chart.getLegend().setItemFont(new Font("宋书", Font.PLAIN, 15));// 设置图例类别字体
chart.setBackgroundPaint(Color.white);// 设置背景色
//获取绘图区对象
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.black); // 设置绘图区背景色
plot.setRangeGridlinePaint(Color.WHITE); // 设置水平方向背景线颜色
plot.setRangeGridlinesVisible(true);// 设置是否显示水平方向背景线,默认值为true
plot.setDomainGridlinePaint(Color.WHITE); // 设置垂直方向背景线颜色
plot.setDomainGridlinesVisible(true); // 设置是否显示垂直方向背景线,默认值为false
// 设置X轴
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(new Font("宋书", Font.PLAIN, 15)); // 设置横轴字体
domainAxis.setTickLabelFont(new Font("宋书", Font.PLAIN, 15));// 设置坐标轴标尺值字体
domainAxis.setLowerMargin(0.01);// 左边距 边框距离
domainAxis.setUpperMargin(0.06);// 右边距 边框距离,防止最后边的一个数据靠近了坐标轴。
domainAxis.setMaximumCategoryLabelLines(10);
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);// 横轴 lable 的位置 横轴上的 Lable 45度倾斜 DOWN_45
// 设置Y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("宋书", Font.PLAIN, 15));
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());//Y轴显示整数
rangeAxis.setAutoRangeMinimumSize(1); //最小跨度
rangeAxis.setUpperMargin(0.18);//上边距,防止最大的一个数据靠近了坐标轴。
rangeAxis.setLowerBound(0); //最小值显示0
rangeAxis.setAutoRange(false); //不自动分配Y轴数据
rangeAxis.setTickMarkStroke(new BasicStroke(1.6f)); // 设置坐标标记大小
rangeAxis.setTickMarkPaint(Color.BLACK); // 设置坐标标记颜色
rangeAxis.setTickUnit(new NumberTickUnit(10));//每10个刻度显示一个刻度值
// 获取折线对象
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();// 设置实线
BasicStroke realLine = new BasicStroke(1.8f); // 设置实线
float dashes[] = { 5.0f };
BasicStroke brokenLine = new BasicStroke(2.2f, // 线条粗细
BasicStroke.CAP_ROUND, // 端点风格
BasicStroke.JOIN_ROUND, // 折点风格
8f, dashes, 0.6f);
for (int i = 0; i < dataSet.getRowCount(); i++) {
if (i % 2 == 0)
renderer.setSeriesStroke(i, realLine); // 利用实线绘制
else
renderer.setSeriesStroke(i, brokenLine); // 利用虚线绘制
}
plot.setNoDataMessage("无对应的数据,请重新查询。");
plot.setNoDataMessageFont(new Font("宋书", Font.PLAIN, 15));//字体的大小
plot.setNoDataMessagePaint(Color.RED);//字体颜色
ServletOutputStream out = response.getOutputStream();
ChartUtilities.writeChartAsJPEG(out, chart, 1000, 800);
//使用一个面向application的工具类,将chart转换成JPEG格式的图片。第3个参数是宽度,第4个参数是高度。
out.close();//关闭输出流
请问横轴不是时间轴怎么设置间距呢?2549253426
DateAxis
中还有另外一个方法:
setTickUnit(DateTickUnit unit).
该方法可用于设置日期间隔,如:
dateAxis. setTickUnit(new DateTickUnit(DateTickUnitType.DAY,interval));
其中:
(DateTickUnit.Day:表示以天为单位
interval
代表两个刻度间的间隔天数