Java 如何删除或编辑MPAndroidChart-StackedBarChart-条目?
我的堆积条形图在中运行得很好,但我正在尝试删除或编辑条形图中的值。但是我找不到任何可以修改的代码 我不认为我的代码是非常有用的,但在这里它是Java 如何删除或编辑MPAndroidChart-StackedBarChart-条目?,java,android,charts,mpandroidchart,Java,Android,Charts,Mpandroidchart,我的堆积条形图在中运行得很好,但我正在尝试删除或编辑条形图中的值。但是我找不到任何可以修改的代码 我不认为我的代码是非常有用的,但在这里它是 private void initStackedBarChartStuff() { mMonths = dfs.getShortMonths(); mChart = (BarChart) mContext.findViewById(R.id.chart1); mChart.setOnChartValueSelectedListen
private void initStackedBarChartStuff() {
mMonths = dfs.getShortMonths();
mChart = (BarChart) mContext.findViewById(R.id.chart1);
mChart.setOnChartValueSelectedListener(this);
mChart.setDescription("");
// if more than 60 entries are displayed in the chart, no values will be
// drawn
mChart.setMaxVisibleValueCount(30);
// scaling can now only be done on x- and y-axis separately
mChart.setPinchZoom(false);
mChart.setDrawGridBackground(false);
mChart.setDrawBarShadow(false);
mChart.setDrawValueAboveBar(false);
// change the position of the y-labels
YAxis yLabels = mChart.getAxisLeft();
yLabels.setValueFormatter(new MyYAxisValueFormatter());
mChart.getAxisRight().setEnabled(false);
mChart.getAxisLeft().setEnabled(false);
XAxis xLabels = mChart.getXAxis();
xLabels.setPosition(XAxis.XAxisPosition.TOP);
Legend l = mChart.getLegend();
l.setPosition(Legend.LegendPosition.BELOW_CHART_RIGHT);
l.setFormSize(8f);
l.setFormToTextSpace(4f);
l.setXEntrySpace(6f);
// mChart.setDrawLegend(false);
}
填写堆叠条形图
private void fillStackedBarChart(Vector drawingData, Vector drawingIntervall) {
if (drawingData == null || drawingData == null)
return;
int anzBdata = dataSizes[1];
int intervall = globalIntervall;
ArrayList<String> xVals = new ArrayList<String>();
// Strings über die Blöcke schreiben ###########################################
{
long zeit = 0;
String[] months = new String[12];
String[] days = new String[7];
boolean einmal = true;
for (int i = 0; i < drawingIntervall.size(); i++)
zeit += ((Long) drawingIntervall.get(i)).longValue();
if (bigData) // > 2 Jahre
months = null;
else if (zeit > 31623000) // > 1 Jahre
months = dfs.getShortMonths();
else
months = dfs.getMonths();
days = dfs.getWeekdays();
for (int i = 0; i < drawingData.size(); i++) {
long[] pack = (long[]) drawingData.get(i);
String s = "";
// Sonderfall !! In Monatsansicht den Monat dazu schreiben
if ((einmal) && (intervall == 2)) {
if (etStart.getText().toString().trim().startsWith("01.")) {
Calendar calE = convStringToDate(etEnd.getText().toString().trim(), true, true);
int jahr = calE.get(Calendar.YEAR);
int monat = calE.get(Calendar.MONTH);
Calendar calX = myGetInstance();
calX.set(Calendar.YEAR, jahr);
calX.set(Calendar.MONTH, monat);
calX = getLastDayOfMonth(calX);
if (calE.getTimeInMillis() == calX.getTimeInMillis()) {
einmal = false;
s = months[calE.get(Calendar.MONTH)];
}
}
}
switch (intervall) {
case 0:
s += df.format(convMilliToDate(pack[0] * 1000, false, false).getTime());
break;
case 1:
s += convMilliToString(pack[0] * 1000);
break;
case 2:
s += "KW " + convMilliToDate(pack[0] * 1000, false, false).get(Calendar.WEEK_OF_YEAR);
break;
case 3:
if (bigData)
s += convMilliToDate(pack[0] * 1000, false, false).get(Calendar.YEAR) + "";
else
s += months[convMilliToDate(pack[0] * 1000, false, false).get(Calendar.MONTH)];
break;
}
xVals.add(s);
}
}
// nun alle Balken/Blöcke zeichnen ##########################################
{
// 1 Y-Wert entspricht z.B. 1 Tag, o. 1 Woche,... jeder Y-Wert hat so viele floats wie B-Daten vorhanden sind ###########################################
ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();
for (int i = 0; i < drawingData.size(); i++) {
long[] pack = (long[]) drawingData.get(i);
long intervallSek = ((Long) drawingIntervall.get(i)).longValue() + 1;
long pastSek = 0;
float[] f = new float[anzBdata + 1];
int b = 0;
for (int j = 0; j < pack.length; j++) {
if ((j >= dataSizes[0]) && (j <= (anzBdata - 1 + dataSizes[0]))) {
f[b++] = pack[j];
pastSek += pack[j];
}
}
f[b++] = intervallSek - pastSek; // zeichnet einen Block indem "keine Daten" aufgezeichnet wurden. (wenn Maschine ohne Strom o.ä.)
yVals1.add(new BarEntry(f, i));
}
// BarDataSet set1 = new BarDataSet(yVals1, "Statistics Business Data");
BarDataSet set1 = new BarDataSet(yVals1, "");
set1.setColors(getColors());
set1.setStackLabels(barChartLegend);
ArrayList<BarDataSet> dataSets = new ArrayList<BarDataSet>();
dataSets.add(set1);
BarData data = new BarData(xVals, dataSets);
data.setValueFormatter(new MyValueFormatter());
mChart.setData(data);
mChart.invalidate();
}
}
private void fills stacked条形图(矢量绘图数据、矢量绘图中间值){
如果(drawingData==null | | drawingData==null)
返回;
int anzBdata=数据量[1];
int intervall=globalIntervall;
ArrayList xVals=新的ArrayList();
//布卢克·施雷本###########################################
{
long-zeit=0;
字符串[]个月=新字符串[12];
字符串[]天=新字符串[7];
布尔值einmal=true;
对于(int i=0;i 2 Jahre
月份=空;
否则,如果(zeit>31623000)/>1贾赫
月份=dfs.getShortMonths();
其他的
months=dfs.getMonths();
days=dfs.getWeekdays();
对于(int i=0;i 如果((j>=dataSizes[0])&&(j这个解决方案真的不太好,也许其他人会找到更好的解决方案
BarChart类从BarLineChartBase扩展而来。BarLineChartBase中有一条线,可以对其进行注释或删除,以获得所需的解决方案
mRenderer.drawValues(canvas);
这个解决方案并不漂亮,希望其他人能找到更好的解决方案
BarChart类从BarLineChartBase扩展而来。BarLineChartBase中有一条线,可以对其进行注释或删除,以获得所需的解决方案
mRenderer.drawValues(canvas);
基本上有两种方式:
- 使用自定义格式设置值(编辑或删除)
- 使用
dataSet.setDrawValues(false)
完全删除所有值
基本上有两种方法:
- 使用自定义格式设置值(编辑或删除)
- 使用
dataSet.setDrawValues(false)
完全删除所有值