JFreeChart DateAxis用法

来源:互联网 发布:android网络请求框架 编辑:程序博客网 时间:2024/05/03 20:30
//例子1int 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));//例子2interval_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)); //例子31.定制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("       不及格     及格 良好 优秀");


原创粉丝点击