Мне нужно создать линейный график, где каждая точка представляет собой приобретенный продукт и где ось X представляет часы дня (от 0 до 24), а y представляет стоимость этого продукта. Для каждого добавляемого объекта я перехожу к Recompose the Composable, но даже несмотря на то, что я создаю точку с правильными координатами, точки не показываются там, где они должны быть.
Мне нужно создать линейный график, где каждая точка представляет собой приобретенный продукт и где ось X представляет часы дня (от 0 до 24), а y представляет стоимость этого продукта. Для каждого добавляемого объекта я перехожу к Recompose the Composable, но даже несмотря на то, что я создаю точку с правильными координатами, точки не показываются там, где они должны быть. [code] @Composable fun StaticLineChart(pointsData: List ) { if(pointsData.isNotEmpty()) { SingleLineChartWithGridLines(pointsData) } else { Box( modifier = Modifier .fillMaxWidth() .height(300.dp), contentAlignment = Alignment.Center ) { Text( text = "No orders today", style = MaterialTheme.typography.bodyMedium, color = Color.Gray ) } } }
@Composable private fun SingleLineChartWithGridLines(pointsData: List) { val steps = 8 val xMax= 24f val yMin= 0f val yMax = pointsData.maxOfOrNull { it.y }?.takeIf { it > 300f } ?: 300f
pointsData.forEach { point -> println("Rendering Point: x=${point.x}, y=${point.y}") }
// Impostare l'asse X con etichette per 24 ore in modo che siano visibili da 0 a 24 val xAxisData = AxisData.Builder() .axisStepSize(30.dp) .topPadding(105.dp) .steps(steps) // 24 ore .labelData { i -> ((i * (xMax / steps))).toInt().toString() } // Mostra etichette ogni 3 ore: 0, 3, 6, ..., 24 .labelAndAxisLinePadding(15.dp) .build()
// Impostare l'asse Y con un minimo fisso di 0 e massimo di almeno 300 val yAxisData = AxisData.Builder() .steps(steps) .labelAndAxisLinePadding(20.dp) .labelData { i -> val yScale = (yMax - yMin) / steps ((i * yScale) + yMin).formatToSinglePrecision() } .build()
LineChart( modifier = Modifier .fillMaxWidth() .height(300.dp), lineChartData = data ) } [/code] Пример точки на графике Может ли мне помочь кто-нибудь с опытом в этом вопросе?