mpandroidchart折线图x轴标签发生重叠问题

时间:2019-09-19 17:42:15

标签: android mpandroidchart linechart

实际上,我们正在尝试根据所拥有的数据来绘制折线图,​​数据以两种方式(每周和每天)进行渲染。折线图由显示日期的x轴组成,但在x轴上显示列表的日期彼此重叠。 请检查此图片以查看:https://pasteboard.co/Iya3jWL.jpg 以下是目前我已申请折线图以调整折线图外观的代码。

final ArrayList<ILineDataSet> linedataSets = new ArrayList<>();

            LineDataSet set1 = new LineDataSet(ptsModel.yVals7, "Male");
            set1.setFillAlpha(110);
            set1.setColor(Color.parseColor("#1C8AF9"));
            set1.setCircleColor(Color.parseColor("#1C8AF9"));
            set1.setFillColor(Color.parseColor("#9C1C8AF9"));
            set1.setLineWidth(2f);
            set1.setCircleRadius(3f);
            set1.setDrawCircleHole(false);
            set1.setValueTextSize(9f);
            set1.setDrawFilled(true);
            set1.setDrawValues(false);
            set1.setMode(LineDataSet.Mode.CUBIC_BEZIER);

            LineDataSet set2 = new LineDataSet(ptsModel.yVals8, "Female");
            set2.setFillAlpha(110);
            set2.setColor(Color.parseColor("#F92F81"));
            set2.setCircleColor(Color.parseColor("#F92F81"));
            set2.setFillColor(Color.parseColor("#B0F92F81"));
            set2.setLineWidth(2f);
            set2.setCircleRadius(3f);
            set2.setDrawCircleHole(false);
            set2.setValueTextSize(9f);
            set2.setDrawFilled(true);
            set2.setDrawValues(false);
            set2.setMode(LineDataSet.Mode.CUBIC_BEZIER);

            linedataSets.add(set1);
            linedataSets.add(set2);

            LineData linedata = new LineData(linedataSets);
            gendertrendschart.setData(linedata);
            gendertrendschart.notifyDataSetChanged();
            gendertrendschart.getAxisLeft().setStartAtZero(true);

            gendertrendschart.getXAxis().setPosition(XAxis.XAxisPosition.BOTTOM);
            gendertrendschart.getXAxis().setDrawGridLines(false);
            gendertrendschart.getAxisLeft().setDrawGridLines(true);
            gendertrendschart.getAxisLeft().setEnabled(true);
            gendertrendschart.getAxisRight().setEnabled(false);
            gendertrendschart.getXAxis().setDrawLabels(true);
            /*int valOffset = (int) (set1.getCircleRadius() * 1.75f);
            gendertrendschart.getXAxis().setXOffset(valOffset);*/
            gendertrendschart.getXAxis().setTextColor(Color.GRAY);
            gendertrendschart.getAxisLeft().setTextColor(Color.GRAY);
            gendertrendschart.getXAxis().setLabelCount(ptsModel.xVals.size(), true);
            gendertrendschart.setMaxHighlightDistance(20);
            gendertrendschart.getXAxis().setGranularityEnabled(true);
            gendertrendschart.getAxisLeft().setGranularityEnabled(true);
            gendertrendschart.getAxisLeft().setValueFormatter(new LargeValueFormatter());

            gendertrendschart.setVisibleXRangeMaximum(5);
            gendertrendschart.setHorizontalScrollBarEnabled(true);

            gendertrendschart.getXAxis().setCenterAxisLabels(true);
gendertrendschart.getXAxis().setValueFormatter(new IndexAxisValueFormatter(ptsModel.xVals));

我尝试在其GitHub存储库中找到解决方案,但无法找到合适的解决方案,如果您能帮助我们,那将是很好的。

2 个答案:

答案 0 :(得分:0)

将以下行添加到您的代码中:

barChart.getXAxis().setGranularityEnabled(true);
barChart.getXAxis().setGranularity(1.0f);
lineChart.getXAxis().setLabelCount(3);  // give any number here for visible labels

缩放后即可获取其他条目的标签

答案 1 :(得分:0)

  

您可以做一件事以获得所需的输出,即必须用两行标记制作x轴标签。因此,它不会与标签重叠。   为此,只需在x轴值列表中的每个标签中间添加“ \ n”即可。

就您而言,我认为您在x轴上显示日期。您只需在SimpleDateFortmater的中间放置“ \ n”即可。

赞:function saveSelected() { var ss=SpreadsheetApp.getActive(); var sh=ss.getSheetByName('Employee List'); var data=sh.getRange(sh.getActiveCell().getRow(),1,1,sh.getLastColumn()).getValues()[0]; var sObj={name:data[0],ssId:data[1],driveId:data[2]}; var folder=DriveApp.getFolderById(sObj.driveId); var file=DriveApp.getFileById(sObj.ssId); file.makeCopy(folder); } function loadSideBarButton() { var userInterface=HtmlService.createHtmlOutput('<input type="button" value="Save Selected Row" onClick="google.script.run.saveSelected()" />'); SpreadsheetApp.getUi().showSidebar(userInterface); } function onOpen() { loadSideBarButton();//When you click this button saveSelected will be called and it will save the spreadsheet for the employee that you have selected with your cursor. You just have to have selected the correct row. }