2011-12-06 33 views
6

Tôi đang sử dụng JFreeChart để tạo Biểu đồ chuỗi thời gian nhưng trong khi tôi chuyển các giá trị Integer dưới dạng Y-Axis, nó hiển thị chúng dưới dạng float !!
vấn đề là gì?
Tôi Tạo biểu đồ như thế này:JFreeChart Hiển thị các giá trị số nguyên như float trong Y-Axis

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); 

Kết quả:
Result

Trả lời

9

Bạn có thể buộc các đơn vị đánh dấu số nguyên như:

priceAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 

Tuy nhiên nó có thể là tốt mà bạn có thể kiểm soát tickunits bằng cách ghi đè getY() của Dataset() của bạn để trả về cá thể của Integer.

Các vấn đề liên quan