Charts: BarChartView: os valores xAxis não estão alinhados com as barras

Criado em 22 jan. 2017  ·  10Comentários  ·  Fonte: danielgindi/Charts

Migrei meus diagramas para o Charts 3.0.1. Funcionou muito bem, mas não consigo alinhar os gráficos de barras aos meus valores xAxis. O diagrama a seguir deve mostrar um histograma de valores entre 0 e 10 (11 barras).

Variante 1

                barChart.xAxis.granularity = 1.0
                barChart.xAxis.granularityEnabled = true
                barChart.xAxis.setLabelCount(11, force: true)

Todos os valores de índice são mostrados, mas não alinhados com as barras.

bildschirmfoto 2017-01-22 um 19 06 29

Variante 2 (centerAxisLabelsEnabled)

                barChart.xAxis.granularity = 1.0
                barChart.xAxis.granularityEnabled = true
                barChart.xAxis.centerAxisLabelsEnabled = true
                barChart.xAxis.setLabelCount(11, force: true)

O índice 10 está ausente no xAxis.

bildschirmfoto 2017-01-22 um 19 16 36

Variante 3 (fitBars)

                barChart.xAxis.granularity = 1.0
                barChart.xAxis.granularityEnabled = true
                barChart.xAxis.centerAxisLabelsEnabled = true
                barChart.xAxis.setLabelCount(11, force: true)
                barChart.fitBars = true

O xAxis começa com -1

bildschirmfoto 2017-01-22 um 19 24 59

**Variante 4 (eixoMínimo e eixoMáximo)

                barChart.xAxis.granularity = 1.0
                barChart.xAxis.granularityEnabled = true
                barChart.xAxis.centerAxisLabelsEnabled = true
                barChart.xAxis.setLabelCount(11, force: true)
                barChart.xAxis.axisMinimum = 0.0
                barChart.xAxis.axisMaximum = 10.0
                barChart.fitBars = true

As barras não estão mais centralizadas e o último valor de xAxis 10 não é mostrado.

bildschirmfoto 2017-01-22 um 19 30 14

Tentei algumas outras combinações, mas não consegui alinhar as barras com meus números 0...10 no xAxis. Alguém tem alguma ideia?

Comentários muito úteis

Para qualquer outra pessoa que esteja lutando com isso, descobri que não poderia usar essa combinação de granularidade e setLabelCount() ou os rótulos seriam desalinhados e/ou as barras esquerda e direita cortadas.

No entanto, isso parece funcionar para mim:

self.periodGraphView.xAxis.labelCount = barValues.count
self.periodGraphView.xAxis.spaceMin = 0.5
self.periodGraphView.xAxis.spaceMax = 0.5
self.periodGraphView.xAxis.granularityEnabled = true
self.periodGraphView.xAxis.granularity = 1

Todos 10 comentários

Outro julgamento. Parece próximo ao meu resultado esperado, mas a primeira e a última barras são mostradas apenas pela metade (veja também isst #2105).

               barChart.xAxis.axisMinimum = 0.0
                barChart.xAxis.axisMaximum = 10.0
                barChart.xAxis.granularity = 1.0
                barChart.xAxis.granularityEnabled = true
                barChart.xAxis.labelCount = 11
                barChart.fitBars = true

bildschirmfoto 2017-01-22 um 19 55 57

O layout de diagrama mais próximo comparado aos Gráficos 2.x me fornece o seguinte código. Mas como posso mover as linhas de grade entre as barras como é feito nos Gráficos 2.x? Eu tentei xAxis.centerAxisLabelsEnabled = true e fitBars = true . Ambos os atributos corromperam meu layout xAxis/bar.

                barChart.xAxis.granularity = 1.0
                barChart.xAxis.granularityEnabled = true
                barChart.xAxis.labelCount = 11

bildschirmfoto 2017-01-22 um 20 06 19

@SvenMuc Também estou enfrentando o mesmo problema com o gráfico combinado (gráfico de barras e linhas) ... A largura da primeira e da última barra é apenas metade .. se você encontrou a solução, por favor me ajude

Para qualquer outra pessoa que esteja lutando com isso, descobri que não poderia usar essa combinação de granularidade e setLabelCount() ou os rótulos seriam desalinhados e/ou as barras esquerda e direita cortadas.

No entanto, isso parece funcionar para mim:

self.periodGraphView.xAxis.labelCount = barValues.count
self.periodGraphView.xAxis.spaceMin = 0.5
self.periodGraphView.xAxis.spaceMax = 0.5
self.periodGraphView.xAxis.granularityEnabled = true
self.periodGraphView.xAxis.granularity = 1

Ei, obrigado, isso me ajudou a colocar os rótulos do eixo x no centro da barra, mas que tal a última barra ser cortada?
Como você consertou?

Ei, obrigado, isso me ajudou a colocar os rótulos do eixo x no centro da barra, mas que tal a última barra ser cortada?
Como você consertou?

barChart.xAxis.axisMaximum = Double(values.count)

barChart.xAxis.centerAxisLabelsEnabled = false
isso corrigido no meu caso.
Não defina centerAxisLabelsEnabled true

consulte demonstração de gráficos. isso tem sido longo .. então deve ser inválido agora.

chartView.xAxis.axisMinimum = -0.5 //para evitar o problema da última barra ficar meio cortada

isso funcionou para mim

Alguém pode me dar todo o código do gráfico, na verdade eu apliquei isso, mas não funcionou

Esta página foi útil?
0 / 5 - 0 avaliações