Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bar Chart Data points showing but Bars not displaying #2892

Open
vishvendu opened this issue Mar 7, 2017 · 4 comments
Open

Bar Chart Data points showing but Bars not displaying #2892

vishvendu opened this issue Mar 7, 2017 · 4 comments

Comments

@vishvendu
Copy link

img_20170307_130925
x-axis is time and y-axis is price...
This is how I am adding data into BarEntry

`JSONArray ChartDataPointArray = data.getJSONArray("ChartDataPoint");
System.out.println("ChartDataPointArray " + ChartDataPointArray.toString());
System.out.println("ChartDataPointArray length " + ChartDataPointArray.length());
long reference_timestamp = 0;
if(ChartDataPointArray.length() > 0)
reference_timestamp = Long.parseLong(ChartDataPointArray.getJSONObject(0).getString("ExecutionTime"));

        IAxisValueFormatter xAxisFormatter = new HourAxisValueFormatter(reference_timestamp);
        XAxis xAxis = _barChart.getXAxis();
        xAxis.setValueFormatter(xAxisFormatter);

        executionarraylist.clear();
        for (int i = 0; i < ChartDataPointArray.length(); i++) {

            JSONObject myJSON = ChartDataPointArray.getJSONObject(i);
            _executionPricebarchart = myJSON.getString("ExecutionPrice");
            _executionTimebarchart = myJSON.getString("ExecutionTime");
            Long _executionTimebarchartLong = Long.parseLong(_executionTimebarchart);
            executionarraylist.add(new BarEntry(_executionTimebarchartLong - reference_timestamp,Float.parseFloat(_executionPricebarchart)));
            }setData();`

` BarDataSet set1;
set1 = new BarDataSet(executionarraylist, "The year 2017");

    // set1.setDrawIcons(false);

    set1.setColors(ColorTemplate.MATERIAL_COLORS);
  

    ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();
    dataSets.add(set1);
    //dataSets.add(set2);

    BarData bardata = new BarData(dataSets);
    bardata.setValueTextSize(10f);
    // data.setValueTypeface(mTfLight);
    bardata.setBarWidth(1.9f);

    _barChart.setData(bardata);
    _barChart.getData().notifyDataChanged();
    _barChart.notifyDataSetChanged();
    _fillBars();`

`private void _fillBars() {

  //  IAxisValueFormatter xAxisFormatter = new DayAxisValueFormatter(_barChart);

    XAxis xAxis = _barChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
   // xAxis.setTypeface(mTfLight);
    xAxis.setDrawGridLines(false);
    xAxis.setGranularity(0.1f); // only intervals of 1 day
    xAxis.setLabelCount(7);
   // xAxis.setValueFormatter(xAxisFormatter);

   // IAxisValueFormatter custom = new MyAxisValueFormatter();

    YAxis leftAxis = _barChart.getAxisLeft();
  //  leftAxis.setTypeface(mTfLight);
    leftAxis.setLabelCount(8, false);
   // leftAxis.setValueFormatter(custom);
    leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
    leftAxis.setSpaceTop(15f);
    leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)

    YAxis rightAxis = _barChart.getAxisRight();
    rightAxis.setDrawGridLines(false);
  //  rightAxis.setTypeface(mTfLight);
    rightAxis.setLabelCount(8, false);
  //  rightAxis.setValueFormatter(custom);
    rightAxis.setSpaceTop(15f);
    rightAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)




    /*IAxisValueFormatter xAxisFormatter = new DayAxisValueFormatter(_barChart);
    XAxis xAxis = _barChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
    xAxis.setDrawGridLines(false);
    xAxis.setGranularity(1f); // only intervals of 1 day
    xAxis.setLabelCount(7);
    xAxis.setValueFormatter(xAxisFormatter);
    _barChart.getAxisRight().setAxisMinValue(0);
    YAxis leftAxis = _barChart.getAxisLeft();
    leftAxis.setLabelCount(8, true);
    leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
    leftAxis.setSpaceTop(15f);*/
   // leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
   // setData(25, 5);
    /*IAxisValueFormatter xAxisFormatter = new DayAxisValueFormatter(referenceTimestamp);
    XAxis xAxis = mChart.getXAxis();
    xAxis.setValueFormatter(xAxisFormatter);*/

}`
@vishvendu
Copy link
Author

@PhilJay need your help on this

@OumaSyuu
Copy link

I think because you are using millisecond as the unit of X axis, it draws the bars with 1 millisecond width. It is hard to see bars that thin. Convert timestamp to minutes (java.util.concurrent.TimeUnit.MINUTES) instead of using raw milliseconds.

@dorbae
Copy link

dorbae commented Aug 9, 2019

@OumaSyuu I had the same problem. However, I solved this problem followed your answer.

@ovik88
Copy link

ovik88 commented Aug 8, 2022

Can it be fixed please ?:P

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants