Charts: Nível de zoom padrão em uma posição.

Criado em 4 ago. 2015  ·  8Comentários  ·  Fonte: danielgindi/Charts

Em primeiro lugar, ótima biblioteca. Gostaria de ter encontrado esta biblioteca antes, ainda estou aprendendo todos os recursos. Há um recurso básico, no entanto, preciso de ajuda para configurá-lo, que é traçar um gráfico de linha simples ou gráfico de barras com 100 pontos de dados, mas em vez de exibir todos esses 100 pontos de dados quando o gráfico aparecer, há um forma padrão para mostrar os últimos 10 pontos de dados ou os primeiros 10 pontos de dados e, em seguida, o usuário pode rolar para visualizar o resto. Este recurso está disponível e como configurá-lo? Thnx

Comentários muito úteis

@spauldingim Eu estava tendo um problema ao redefinir os dados do meu gráfico de barras em que aumentaria muito o zoom ao chamar o código acima novamente.

Corrigido, primeiro diminuindo o zoom a cada vez:
barChartView.zoom(scaleX: 0, scaleY: 0, x: 0, y: 0)

Todos 8 comentários

Descobri que é parecido com meu antigo post. O que eu estava pedindo é para restaurar o estado de deslocamento de escala / rolagem enquanto voltava ao gráfico. Você pode dar uma olhada em : https : //github.com/danielgindi/ios-charts/issues/226

Obrigado pela sua resposta rápida, eu vi aquele post antes, mas ainda não desisti de ter certeza do que definir para atingir o objetivo desejado. Eu só tenho 1 VC, então não preciso transportar o 2º VC. se houver o mesmo código será muito apreciado.

Não tenho certeza, mas não é uma tarefa fácil poder chegar a uma solução muito rapidamente.

Se eu fosse você, primeiro examinaria panGestureRecognized e pinchGestureRecognized para entender como o zoom / rolagem é implementado. Geralmente, é necessário fazer alguns cálculos sobre a localização de toque e obter o novo valor de escala / tradução e fazer CGAffineTransform e atualizar a matriz por meio de viewPortHandler.refresh()

Existem muitas APIs que podem ajudar em ChartTransformer e ChartViewPortHandler . Para converter os valores dos dados e os pixels da tela entre si.

Você tem que pensar sobre como calcular o primeiro / último valor de conversão de 10 pontos de dados de acordo com o nível de escala. Posso supor que se conseguisse obter o valor do ponto de dados específico dado o nível de escala, tente fazer alguns cálculos para permitir que viewPortHandler.contentRect contenha apenas os dados de que você precisa (por meio dos primeiros dados e do último ponto de dados x valor), para que possamos calcular os limites e deslocamento, e atualize a matriz.

Bem-vindo melhores respostas :) Eu só dou alguns segundos para pensar sobre isso e continuar meu trabalho.

Obviamente, você precisa entender como criamos a matriz por meio de:

self._viewPortHandler.restrainViewPort(offsetLeft: left, offsetTop: top, offsetRight: right, offsetBottom: bottom)
prepareOffsetMatrix()
prepareValuePxMatrix()

Consegui isso depois de brincar um pouco com ele. Na verdade, é bastante simples.

chart.data = data;   // This is the MAIN reason, data for the chart has to be set first before the next 2 steps otherwise they will just get ignored like nothing has been set.

// defina o ponto de dados máximo x para 10, que é o que eu queria, mostrando apenas 10 pontos de dados para a linha ou gráfico de barras, de 100 pontos de dados.
[gráfico setVisibleXRan geMaximum: 10 ];
// mova a visualização do gráfico para o índice 90 de X, que são as últimas 10 entradas que desejo ver. e funciona conforme o esperado.
[gráfico mo veViewToX: 90 ];

boa pegada!

Se você não deseja 'bloquear' a visualização para exibir apenas 10 pontos de dados, você pode usar o seguinte em viewDidLoad.
float xScale = totalPoints / initialPointsDisplayed;
[ zoom do gráfico scaleY: 1,0 x: 0,0 y: 0,0];
[self.chartView mo veViewToX: totalPoints - initialPointsDisplayed];

@spauldingim Eu estava tendo um problema ao redefinir os dados do meu gráfico de barras em que aumentaria muito o zoom ao chamar o código acima novamente.

Corrigido, primeiro diminuindo o zoom a cada vez:
barChartView.zoom(scaleX: 0, scaleY: 0, x: 0, y: 0)

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

Questões relacionadas

cilasgimenez picture cilasgimenez  ·  4Comentários

deepumukundan picture deepumukundan  ·  3Comentários

brytnvmg picture brytnvmg  ·  4Comentários

BrandonShega picture BrandonShega  ·  4Comentários

ahmedsafadii picture ahmedsafadii  ·  3Comentários