我编写了一个TimeChart代码,但没有显示X标签,我不知道为什么。这是使用空图形构建View的代码,以及填充它的方法:
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 :(得分:0)
有一些逻辑确保显示漂亮的圆形标签。但是,有些情况下您不需要这些标签,最好的例子是时间表。我建议你添加以下电话:
multipleRenderer.setXRoundedLabels(false);
答案 1 :(得分:0)
虽然这个问题在过去很长一段时间,我仍然想回答它。 使用AChartEngine库,我有一些问题: 我想多次查看timeChat视图,并且我不想多次创建和删除GraphicalView。但是当我为TimeSeries设置新数据时,不会显示x标签。 我在TimeChart.java中添加了这段代码:
public void clear() {
mStartPoint = null;
}
然后当我需要referh时,我这样称呼:
mTimeChart.clear();
mSeries.add(dates1[i], values[i]);//add new data
mGraphicalView.repaint();//invalidate