2011-12-06 15 views
6

में फ्लोट के रूप में पूर्णांक मान प्रदर्शित करता है I टाइम सीरीज चार्ट बनाने के लिए JFreeChart का उपयोग कर रहा हूं, लेकिन जब मैं वाई-एक्सिस के रूप में इंटीजर मानों को पास कर रहा हूं तो यह उन्हें फ्लोट के रूप में दिखाता है !!
समस्या क्या है? इस तरह
मैं बना रहा हूं चार्ट:JFreeChart वाई-एक्सिस

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

हालांकि यह संभव है कि आप नियंत्रित कर सकते हो सकता है इंटीजर के उदाहरण को वापस करने के लिए अपने डेटासेट() के getY() को ओवरराइड करके टिकनिट्स।

संबंधित मुद्दे