Inconsistent behavior with date series
Opened this issue · 1 comments
Hi everyone
I'm very pleased with the library, great works!
Problem is, I don't understand why it behaves inconsistently, meaning that one time it shows like this (without date X labels and incorrect Y axis rounding)
in place of the correct display
I'm following the example Dates.java
https://github.com/jjoe64/GraphView-Demos/blob/master/app/src/main/java/com/jjoe64/graphview_demos/examples/Dates.java
if (story.getId().equals(storyId)) {
GraphView graph = (GraphView) findViewById(R.id.graph);
DataPoint[] dataPoints = new DataPoint[story.getMetrics().size()];
int i = 0;
for (Story.Metric metric : story.getMetrics()) {
dataPoints[i] = new DataPoint(metric.getDate(), (int)metric.getConversations());
i++;
}
LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(dataPoints);
series.setAnimated(true);
graph.addSeries(series);
graph.getGridLabelRenderer().setLabelFormatter(new DateAsXAxisLabelFormatter(graph.getContext(), new SimpleDateFormat(LABEL_DATE_FORMAT)));
graph.getGridLabelRenderer().setNumHorizontalLabels(dataPoints.length);
// as we use dates as labels, the human rounding to nice readable numbers
// is not nessecary
graph.getGridLabelRenderer().setHumanRounding(false);
// set manual x bounds to have nice steps
graph.getViewport().setMinX(story.getMetrics().get(0).getDate().getTime());
graph.getViewport().setMaxX(story.getMetrics().get(story.getMetrics().size() - 1).getDate().getTime());
graph.getViewport().setXAxisBoundsManual(true);
}
I'm really puzzled..
thanks
nicola
Same goes to me but my date redundance.
` DateFormat fmt1 = new SimpleDateFormat("MMMM dd, yyyy", Locale.US);
Date d1 = null,d2 = null,d3 = null,d4 = null,d5 = null,d6 = null,d7 = null,
d8 = null,d9 = null,d10 = null,d11 = null, d12 = null;
try {
d1 = fmt1.parse("January 1, 2018");
d2 = fmt1.parse("February 1, 2018");
d3 = fmt1.parse("March 1, 2018");
d4 = fmt1.parse("April 1, 2018");
d5 = fmt1.parse("May 1, 2018");
d6 = fmt1.parse("June 1, 2018");
d7 = fmt1.parse("July 1, 2018");
d8 = fmt1.parse("August 1, 2018");
d9 = fmt1.parse("September 1, 2018");
d10 = fmt1.parse("October 1, 2018");
d11 = fmt1.parse("November 1, 2018");
d12 = fmt1.parse("December 1, 2018");
} catch (ParseException e) {
e.printStackTrace();
}
graphView = (GraphView)v.findViewById(R.id.graph);
series = new LineGraphSeries<>(new DataPoint[] {
new DataPoint(d1, 0),
new DataPoint(d2, 123.00),
new DataPoint(d3, 200.00),
new DataPoint(d4, 145.00),
new DataPoint(d5, 150.00),
new DataPoint(d6, 180.00),
new DataPoint(d7, 0.00),
new DataPoint(d8, 0.00),
new DataPoint(d9, 0.00),
new DataPoint(d10, 0.00),
new DataPoint(d11, 30.00),
new DataPoint(d12, 0.00)
});
series.setColor(ContextCompat.getColor(getActivity(), R.color.bgwhite));
//series.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.bgwhite));
graphView.addSeries(series);
// set date label formatter
DateFormat fmt = new SimpleDateFormat("MMM", Locale.US);
graphView.getGridLabelRenderer().setLabelFormatter(new DateAsXAxisLabelFormatter(getActivity(), fmt));
graphView.getGridLabelRenderer().setNumHorizontalLabels(12); // only 4 because of the space
graphView.getGridLabelRenderer().setTextSize(20f);
graphView.getGridLabelRenderer().setLabelHorizontalHeight(10);
// set manual x bounds to have nice steps
graphView.getViewport().setMinX(d1.getTime());
graphView.getViewport().setMaxX(d12.getTime());
graphView.getViewport().setXAxisBoundsManual(true);
//graphView.getViewport().calcCompleteRange();
// as we use dates as labels, the human rounding to nice readable numbers
// is not necessary
graphView.getGridLabelRenderer().setHumanRounding(false); // show line graph y`