Я создаю PieChart, используя следующий код:
private fun populateDonutChart(responseDon: List<ResponseDon>, responseDist: List<ResponseDist>) {
val brand = ArrayList<String>()
var index = 0f
var color_index = 0
val data = PieData()
val kpiValue = ArrayList<PieEntry>()
val colorArray = IntArray(responseDonutChart.size)
val myColorMap = HashMap<String, Int>()
for (item in responseDonutChart) {
kpiValue.add(PieEntry(item.kPIvalue.toFloat(), item.brand, index))
brand.add(item.brand)
if (color_index < 9)
colorArray[color_index] = getColor(piechart.context, getColorID(color_index))
else
colorArray[color_index] = getColorID(color_index)
myColorMap.put(item.brand, colorArray[color_index])
index++
color_index++
}
Log.e(TAG, "Colors: "+ myColorMap)
val pieDataSet = PieDataSet(kpiValue, "MY Pie Chart")
pieDataSet.setColors(*colorArray)
val listColors = pieDataSet.colors
Log.e(TAG, "Colors: from dataset "+ listColors)
var indexColor = 0
for ((key, value) in myColorMap) {
myColorMap.put(key,listColors.get(indexColor))
indexColor++
}
Log.e(TAG, "Colors: "+ myColorMap)
filterSecondBarData(responseDistributionBarGraph, myColorMap)
pieDataSet.sliceSpace = 2.5f
pieDataSet.valueTextSize = 10f
pieDataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE)
data.addDataSet(pieDataSet)
addDatatoPieChart(data)
}
private fun addDatatoPieChart(data: PieData) {
piechart.data = data
val legend = piechart.legend
legend.isEnabled = false
piechart.description.isEnabled = false
piechart.animateXY(1500, 1500)
piechart.setUsePercentValues(true)
piechart.invalidate()
}
Порядок / значение цветов в colorArray и myColorMap:
{MM=-800240, SG=-949048, SM=-12203864, LG=-5071618}
Но Piechart делает повторно - упорядочить этот порядок цветов следующим образом:
{SG=-800240, LG=-949048, SM=-12203864, MM=-5071618}
Здесь myColorMap - это HashMap, для которого мне необходимо назначить те же значения цвета для гистограммы позже. Я получил этот порядок цветов на круговой диаграмме, используя pieDataSet.colors
, и вручную создал вышеупомянутый перестроенный HashMap для понимания читателя. Здесь значения SG, LG, SM, MM в круговой диаграмме: 13,35,27,25
Итак, как назначить цветовой код для среза или есть ли способ остановить эту перестановку, так как я необходимо назначить одинаковые цвета гистограмме.