//例子1 int count = 15;//相隔15分钟 SimpleDateFormat formatter = new SimpleDateFormat("HH:mm"); dateAxis.setAutoTickUnitSelection(true) ; ((DateAxis) dateaxis).setTickUnit(new DateTickUnit(DateTickUnitType.MINUTE, count, formatter)); ((DateAxis) dateaxis).setDateFormatOverride(formatter); //位移Xplot.setAxisOffset(new Spacer(1, 5D, 5D, 5D, 5D)); //例子2 interval_of_X_axis = 60; DateAxis domainAxis = (DateAxis)plot.getDomainAxis(); //设置每隔5秒钟一个间距 domainAxis.setTickUnit(new DateTickUnit(DateTickUnit.SECOND, 5, new SimpleDateFormat("mm:ss"))); GregorianCalendar gc = new GregorianCalendar(); int year = gc.get(Calendar.YEAR); int month = gc.get(Calendar.MONTH); int day = gc.get(Calendar.DATE); int hour = gc.get(Calendar.HOUR_OF_DAY); int miniute = gc.get(Calendar.MINUTE); int second = gc.get(Calendar.SECOND); domainAxis = (DateAxis) plot.getDomainAxis(); // 设置X轴最大值 gc = new java.util.GregorianCalendar(year, month, day, hour, miniute , second); domainAxis.setMaximumDate(new Date(gc.getTimeInMillis())); // 设置X轴最小值, 最大值和最小值之间的距离为interval_of_X_axis秒钟 gc.add(Calendar.SECOND, - interval_of_X_axis); domainAxis.setMinimumDate(new Date(gc.getTimeInMillis())); domainAxis.setTickLabelFont(new Font("Dialog", Font.PLAIN, 10)); //例子3 1.定制x轴(时间轴)坐标刻度 在DateAxis类中中有refreshTicksHorizontal方法用来获取时间轴坐标刻度集合,我们可以通过重写该方法来定制我们想要显示在时间轴上的刻度。 DateAxis dateAxis1 = new DateAxis("时间轴") { protected List<DateTick> refreshTicksHorizontal(Graphics2D g2, Rectangle2D dataArea, RectangleEdge edge) { List ticks = super.refreshTicksHorizontal(g2, dataArea, edge); Map<String,DateTick> newTicks=new HashMap<String, DateTick>(); for (Iterator it = ticks.iterator(); it.hasNext();) { //在这里可以添加删除时间轴刻度,添加时间轴刻度时要对时间格式进行转换: //DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss 'CST' yyyy", Locale.US); DateTick tick = (DateTick) it.next(); newTicks.put(tick.getText(), new DateTick(tick.getDate(),tick.getText(),TextAnchor.TOP_CENTER, TextAnchor.TOP_RIGHT,0)); if(!newTicks.containsKey(tick.getText())){//去除重复的坐标刻度 newTicks.put(tick.getText(), new DateTick(tick.getDate(), tick.getText(), TextAnchor.TOP_CENTER, TextAnchor.TOP_RIGHT, 0 )); } } return Collections.list(Collections.enumeration(newTicks.values())); } }; 2.定制y轴(数字轴)坐标刻度。 在NumberAxis类中重写protected List refreshTicksVertical(Graphics2D g2,Rectangle2D dataArea, RectangleEdge edge) 方法,跟上面的做法类似。 3.定制y轴(数字轴)上坐标刻度值的颜色。 有时候我们需要用不同的颜色来显示y轴坐标刻度值的颜色,例如选定一个基点数字,这个基点数字用灰色字显示,大于基点的数字用红色字显示,小于基点的数字用绿色字显示。要做到这种效果可以重写NumberAxis类中的drawTickMarksAndLabels方法,该方法里面g.setPaint(getTickLabelPaint());就是用来设置刻度坐标值的颜色的。
ValueAxis vaxis=plot.getRangeAxis();//坐标轴 vaxis.setTickLabelsVisible(false);//y刻度是否消失 NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis(); // 取得纵轴 numberAxis.setLabel(" 不及格 及格 良好 优秀");
JFreeChart DateAxis用法
最新推荐文章于 2022-06-30 16:37:24 发布