我试图制作图表,其中x轴包含日期作为字符串。所以我使用customLabelFormatter
它给了我一年约365个日期的所有日期。
现在,问题是x轴显示所有日期,但是在非常共轭的空间中,所以它看起来像一条直线。
这是我的代码:
public class TestActivity extends Activity {
private RelativeLayout grapahcontainer;
private String[] dates;
private Random rand;
private SimpleDateFormat dateFormat = new SimpleDateFormat("d/M");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
grapahcontainer = (RelativeLayout) findViewById(R.id.graph);
rand = new Random();
dates = new String[366];
getDates();
int size = dates.length;
GraphViewData[] data = new GraphViewData[size];
for (int i = 0; i < size; i++) {
data[i] = new GraphViewData(i, rand.nextInt(800));
}
LineGraphView graphView = new LineGraphView(this, "GraphViewDemo");
graphView.setCustomLabelFormatter(new CustomLabelFormatter() {
@Override
public String formatLabel(double value, boolean isValueX) {
// TODO Auto-generated method stub
if (isValueX) {
return dateFormat.format(new Date());
}
return null;
}
});
graphView.setDrawDataPoints(true);
graphView.setDataPointsRadius(5f);
// add data
graphView.addSeries(new GraphViewSeries(data));
graphView.getGraphViewStyle().setGridColor(Color.TRANSPARENT);
graphView.getGraphViewStyle().setHorizontalLabelsColor(Color.GRAY);
graphView.getGraphViewStyle().setVerticalLabelsColor(Color.GRAY);
graphView.getGraphViewStyle().setTextSize(10);
graphView.getGraphViewStyle().setVerticalLabelsWidth(30);
graphView.setHorizontalLabels(dates);
graphView.setVerticalLabels(getResources().getStringArray(
R.array.verticalLbls));
// set view port, start=0, size=8
graphView.setViewPort(0, 8);
graphView.setScrollable(true);
RelativeLayout.LayoutParams graphViewpParams = new RelativeLayout.LayoutParams(
300, 500);
graphView.setLayoutParams(graphViewpParams);
grapahcontainer.addView(graphView);
}
private void getDates() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 1);
calendar.add(Calendar.DATE, -365);
dates[0] = (dateFormat.format(calendar.getTime()));
for (int i = 0; i < 365; i++) {
calendar.add(Calendar.DATE, 1);
String dateStr = dateFormat.format(calendar.getTime());
// System.out.println("Date : " + dateStr);
dates[i + 1] = dateStr;
}
}
}
答案 0 :(得分:1)
您可以使用GraphViewStyle
:
> setNumHorizontalLabels(int numHorizontalLabels)
> setNumVerticalLabels(int numVerticalLabels)