//例子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 vaxis=plot.getRangeAxis();</span><span class="comment">//坐标轴</span><span> </span></span></li><li class=""><span>vaxis.setTickLabelsVisible(<span class="keyword">false</span><span>);</span><span class="comment">//y刻度是否消失</span><span> </span></span></li><li class="alt"><span>NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis(); <span class="comment">// 取得纵轴 </span><span> </span></span></li><li class=""><span>numberAxis.setLabel(<span class="string">" 不及格 及格 良好 优秀"</span><span>); </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>
JFreeChart DateAxis用法
最新推荐文章于 2020-09-07 16:03:41 发布