JFreeChart DateAxis用法

//例子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());就是用来设置刻度坐标值的颜色的。<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a><div style="position: absolute; left: 0px; top: 0px; width: 0px; height: 0px; z-index: 99;"><embed id="ZeroClipboardMovie_2" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="0" height="0" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=0&height=0" wmode="transparent"></div></div></div><ol start="1" class="dp-j"><li class="alt"><span><span>ValueAxis&nbsp;vaxis=plot.getRangeAxis();</span><span class="comment">//坐标轴</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>vaxis.setTickLabelsVisible(<span class="keyword">false</span><span>);</span><span class="comment">//y刻度是否消失</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>NumberAxis&nbsp;numberAxis&nbsp;=&nbsp;(NumberAxis)&nbsp;plot.getRangeAxis();&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;取得纵轴&nbsp;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>numberAxis.setLabel(<span class="string">"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不及格&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;及格&nbsp;良好&nbsp;优秀"</span><span>);&nbsp;&nbsp;</span></span></li></ol></div><pre name="code" class="java" style="display: none;">ValueAxis vaxis=plot.getRangeAxis();//坐标轴
vaxis.setTickLabelsVisible(false);//y刻度是否消失
NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();   // 取得纵轴 
numberAxis.setLabel("       不及格     及格 良好 优秀");</pre><br>
<pre></pre>
<br>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值