2011-12-06 59 views
6

我使用JFreeChart来创建时间序列图表,但是当我将整数值作为Y轴传递时,它将它们显示为float!
有什么问题?
我创建的图表所示:JFreeChart在Y轴中显示整数值为float float

this.TodaySeriesGoldPrice = new TimeSeries("Price",Minute.class); 
if(TDD!=null){ 
    for(Map<String, Object> D: TDD){ 
     Calendar C=Calendar.getInstance(); 
     C.setTime(new Date((Long)D.get("timestamp"))); 
     this.TodaySeriesGoldPrice.add(new Minute(C.get(Calendar.MINUTE),C.get(Calendar.HOUR),C.get(Calendar.DAY_OF_MONTH),C.get(Calendar.MONTH),C.get(Calendar.YEAR)),(Integer)(((Map<String,Object>)D.get("tala")).get("Coin"))); 
    } 
} 

TimeSeriesCollection TodayDataset = new TimeSeriesCollection(); 
TodayDataset.addSeries(this.TodaySeriesGoldPrice); 
TodayDataset.setDomainIsPointsInTime(true); 
JFreeChart chart = ChartFactory.createTimeSeriesChart(
    "", // title 
    "Time",// x-axis label 
    "Price",// y-axis label 
    TodayDataset,// data 
    true, // create legend? 
    true, // generate tooltips? 
    false // generate URLs? 
); 
chart.setBackgroundPaint(Color.white); 
XYPlot plot = (XYPlot) chart.getPlot(); 
plot.setBackgroundPaint(Color.lightGray); 
plot.setDomainGridlinePaint(Color.white); 
plot.setRangeGridlinePaint(Color.white); 
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0)); 
plot.setDomainCrosshairVisible(true); 
plot.setRangeCrosshairVisible(true); 
plot.getDomainAxis().setLabelFont(new Font("Tahoma",Font.PLAIN,13)); 
plot.getRangeAxis().setLabelFont(new Font("Tahoma",Font.PLAIN,13)); 
XYItemRenderer r = plot.getRenderer(); 
DateAxis axis = (DateAxis) plot.getDomainAxis(); 
axis.setDateFormatOverride(new SimpleDateFormat("H:mm")); 
ChartPanel DCP=new ChartPanel(chart); 
dispPanel.setLayout(new BorderLayout()); 
dispPanel.add(DCP,BorderLayout.CENTER); 

结果:
Result

回答

9

您可以强制整剔单位:

priceAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 

但是有可能,你可以控制通过重写您的Dataset()的getY()来返回Integer的实例。