2013-09-19 4 views
0

У меня код TimeChart, но X-метки не отображаются, и я не знаю почему. Это код для сборки Просмотр с пустым графом и метод его заполнения:AChartEngine, метки X не отображаются

GraphicalView graphicalView = null; 
TimeSeries series = null; 
XYMultipleSeriesDataset dataset = null; 
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
public View buildGraph() { 
    series = new TimeSeries(""); 
    dataset = new XYMultipleSeriesDataset(); 
    dataset.addSeries(series); 
    // set properties 
    XYSeriesRenderer renderer = new XYSeriesRenderer(); 
    renderer.setPointStyle(PointStyle.CIRCLE); 
    renderer.setLineWidth(2); 


    XYMultipleSeriesRenderer multipleRenderer = new XYMultipleSeriesRenderer(); 
    multipleRenderer.addSeriesRenderer(renderer); 
    multipleRenderer.setShowGrid(true); 
    multipleRenderer.setPointSize(8); 
    multipleRenderer.setClickEnabled(true); 
    multipleRenderer.setShowLegend(false); 
    multipleRenderer.setShowLabels(true); 
    multipleRenderer.setLabelsTextSize(20); 
    // create view 
    if (graphicalView == null) { 
     graphicalView = ChartFactory.getTimeChartView(context, dataset, 
       multipleRenderer, ""); 
     graphicalView.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       SeriesSelection seriesSelection = graphicalView 
         .getCurrentSeriesAndPoint(); 
       if (seriesSelection != null) { 
        Toast.makeText(
          context, 
          " " + dateFormat.format(seriesSelection.getXValue()) + " " 
            + seriesSelection.getValue(), 
          Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 
    return graphicalView; 
} 

// refresh graph 
@SuppressLint("SimpleDateFormat") 
public void refresh(ArrayList<String[]> list) { 

    try { 
     for (int i = 0; i < list.size(); i++) { 
      series.add(dateFormat.parse(list.get(i)[2]), 
        Double.valueOf(list.get(i)[0])); 
     } 
    } catch (NumberFormatException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    graphicalView.repaint(); 
} 

что не так?

ответ

0

Существует некоторая логика, которая позволяет отображать красивые закругленные метки. Однако есть случаи, когда вам не нужны эти ярлыки, и лучшим примером является график времени. Я предлагаю вам позвонить по телефону:

multipleRenderer.setXRoundedLabels(false); 
+0

это то же самое, дата оси х не показали слишком. – giozh

+0

Опубликовать снимок экрана и некоторые значения оси X, которые вы используете. –

+0

https://drive.google.com/folderview?id=0Bxi2arJ2Dv9xZlpTNlVtVTJ6YjQ&usp=sharing Граф называется значениями Т показал в ListView – giozh

0

Хотя эта проблема в прошлом в течение длительного времени, я все еще хочу ответить на нее. Используйте библиотеку AChartEngine, у меня есть некоторая проблема: Я хочу, чтобы время от времени отображалось в часах, и я не хочу многократно создавать и удалять GraphicalView. Но когда я устанавливаю новые данные для TimeSeries, x lables не отображаются. добавить этот код в TimeChart.java:

public void clear() { 
    mStartPoint = null; 
    } 

, а затем, когда мне нужно refersh, я называю так:

mTimeChart.clear(); 
    mSeries.add(dates1[i], values[i]);//add new data 
    mGraphicalView.repaint();//invalidate 
Смежные вопросы