这里尝试在x轴上设置日期。我正在将 Unix时间戳 传递到 LineChart 的入口点,但是没有得到输出无法正确的结果是输出。
事实证明,由于Entries使用了浮点数,我的时间戳上的精度正在下降......足以弄乱x轴上标签之间的间隔。
此处代码
mChart.getDescription().setEnabled(false);
mChart.setTouchEnabled(true);
mChart.setDragDecelerationFrictionCoef(0.5f);
mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);
mChart.setDrawGridBackground(false);
mChart.setHighlightPerDragEnabled(false);
mChart.setBackgroundColor(Color.WHITE);
mChart.setViewPortOffsets(0f, 0f, 0f, 0f);
MonthPriceGraph = new ArrayList<>();
final ArrayList<String> Xdate = new ArrayList<>();
MonthPriceGraph = dataBaseManager.getPrice(Contants.getSymbol());
if (MonthPriceGraph.size() != 0) {
ArrayList<Entry> values = new ArrayList<Entry>();
for (int i = 0; i < MonthPriceGraph.size(); i++) {
Xdate.add(MonthPriceGraph.get(i).getCoinCCTime());
long t = Long.parseLong(MonthPriceGraph.get(i).getCoinCCTime());
Log.e(TAG, "Time is: " + MonthPriceGraph.get(i).getCoinCCTime());
float yValue = Float.parseFloat(MonthPriceGraph.get(i).getCoinCCPrice());
values.add(new Entry(Float.parseFloat(MonthPriceGraph.get(i).getCoinCCTime()), yValue));
}
LineDataSet set1 = new LineDataSet(values, "ETH");
set1.setAxisDependency(YAxis.AxisDependency.LEFT);
set1.setColor(Color.BLUE);
set1.setValueTextColor(Color.BLUE);
set1.setLineWidth(2.5f);
set1.setDrawCircles(true);
set1.setDrawFilled(true);
set1.setDrawValues(false);
set1.setCircleColor(getActivity().getResources().getColor(R.color.blue));
set1.setFillColor(getActivity().getResources().getColor(R.color.gry_color));
set1.setHighLightColor(Color.rgb(0, 0, 255));
set1.setDrawCircleHole(false);
LineData data = new LineData(set1);
data.setValueTextColor(Color.BLACK);
data.setValueTextSize(5f);
// set data
mChart.setData(data);
mChart.invalidate();
Legend l = mChart.getLegend();
l.setEnabled(false);
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM_INSIDE);
Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), "fonts/worksenslight.ttf");
xAxis.setTypeface(tf);
xAxis.setTextSize(12f);
xAxis.setAvoidFirstLastClipping(true);
xAxis.setTextColor(Color.BLUE);
xAxis.setDrawAxisLine(true);
xAxis.setDrawGridLines(true);
xAxis.setTextColor(Color.rgb(0, 0, 0));
xAxis.setCenterAxisLabels(false);
xAxis.setValueFormatter(new IAxisValueFormatter() {
private SimpleDateFormat mFormat = new SimpleDateFormat("dd MMM,yyyy");
@Override
public String getFormattedValue(float value, AxisBase axis) {
Date s = new Date((long) (value * 1000L));
return mFormat.format(s);
}
});
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setPosition(YAxis.YAxisLabelPosition.INSIDE_CHART);
leftAxis.setTypeface(tf);
leftAxis.setTextSize(12f);
leftAxis.setTextColor(ColorTemplate.getHoloBlue());
leftAxis.setDrawGridLines(true);
leftAxis.setGranularityEnabled(false);
leftAxis.setAxisMinimum(8000);
leftAxis.setAxisMaximum(12000);
leftAxis.setYOffset(-9f);
leftAxis.setTextColor(Color.rgb(0, 0, 0));
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setEnabled(false);
rightAxis.setEnabled(false);
如何解决这个问题。 错误的输出得分为Image。 第一个日期是: 2017年8月8日 2017年8月12日
像这样的模式想要显示图像答案 0 :(得分:0)
尝试一下,这对我有用
XAxis xAxis = lineChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setValueFormatter(new IndexAxisValueFormatter(getAreaCount));
public ArrayList<String> getAreaCount() {
ArrayList<String> label = new ArrayList<>();
for (int i = 0; i < areaList.size(); i++) //your date arraylist
label.add(areaList.get(i).getTopicName()); //your date
return label;
}