JFreeChart Displays integer values as float in Y-Axis

ⅰ亾dé卋堺 提交于 2019-12-10 13:38:25

问题


I'm using JFreeChart to create a Time Series Chart but while I'm passing Integer values as Y-Axis it shows them as float!!
what is the problem?
I'm Creating chart like this:

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:


回答1:


You can force integer tick units as:

priceAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

However it may be possible that you can control the tickunits by overriding getY() of your Dataset() to return instance of Integer.



来源:https://stackoverflow.com/questions/8399355/jfreechart-displays-integer-values-as-float-in-y-axis

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!