【发布时间】:2015-02-21 04:04:09
【问题描述】:
这是一个由 3 部分组成的问题。
1) 首先,是否可以旋转水平 X 值。目前,当我试图在 X 轴(2015 年 4 月 1 日、2015 年 4 月 2 日等)上显示一个月中的所有天时,它们都会聚集在一起,变得不可读。 有没有办法旋转 X 轴标签使其垂直?
2) 要设置视口,文档建议使用:
graphview.getViewport().setScalable(true); graphview.getViewport().setScrollable(true); // To set a fixed manual viewport use this: // set manual X bounds graph.getViewport().setXAxisBoundsManual(true); graph.getViewport().setMinX(0.5); graph.getViewport().setMaxX(3.5); // set manual Y bounds graph.getViewport().setYAxisBoundsManual(true); graph.getViewport().setMinY(3.5); graph.getViewport().setMaxY(8);
但是,getViewport().setMinX(...) 函数需要双精度,而不是日期。 有没有办法滚动视口以一次显示 3-5 个日期?
代码 2):
GraphView graph = (GraphView) graphView.findViewById(R.id.graph);
DataPoint[] stockArr = new DataPoint[dplist.size()];
stockArr = dplist.toArray(stockArr);
LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(stockArr);
graph.addSeries(series);
graph.setTitle("TEST GRAPH");
// set date label formatter
graph.getGridLabelRenderer().setLabelFormatter(new DateAsXAxisLabelFormatter(context));
graph.getViewport().setScalable(true);
graph.getViewport().setScrollable(true);
graph.getGridLabelRenderer().setNumHorizontalLabels(data.size()-1); // Approx 28-30
graph.getViewport().setXAxisBoundsManual(true);
graph.getViewport().setMinX(firstDate.getTime());
graph.getViewport().setMaxX(lastDate.getTime());
3) 有没有办法将项目符号与日期标签对齐?我用以下代码修改了我的 X 标签。但是,即使在更改之前,项目符号似乎也没有排列好。在下图中,1/1 应该是第一个点,1/2 应该是第二个点,1/3 应该是第三个点。有什么想法吗?
代码 3):
graph.getGridLabelRenderer().setLabelFormatter(new DateAsXAxisLabelFormatter(context) {
@Override
public String formatLabel(double value, boolean isValueX) {
if (isValueX) {
// show normal x values
Calendar c = Calendar.getInstance();
// set time in milliseconds
c.setTimeInMillis(((long)value));
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
System.out.println((mMonth+1) + "/" + mDay);
// Return Month/Day
return (mMonth+1) + "/" + mDay;
//return super.formatLabel(newDate.toString(), isValueX);
} else {
// show currency for y values
return super.formatLabel(value, isValueX);
}
}
});
【问题讨论】:
标签: java android graph android-graphview