Simple Science

Ciência de ponta explicada de forma simples

# Informática# Gráficos

Uma Nova Abordagem para Rotulagem de Gráficos

Apresentando um método de bitmap eficiente para colocação automática de rótulos em gráficos.

― 8 min ler


Método Eficiente deMétodo Eficiente deRotulagem de Gráficosrotulagem para vários gráficos.A técnica Bitmap facilita o processo de
Índice

Quando a gente cria gráficos, é super importante que as legendas sejam fáceis de ler e não se sobreponham com outras legendas ou gráficos. Isso vira um desafio grande quando tem muitos pontos de dados em um gráfico. Se alguém fosse colocar as legendas à mão para cada ponto, ia ser muito demorado.

Pra facilitar, a gente precisa de um sistema que possa arranjar automaticamente as legendas pra gráficos com muitos pontos de dados. Os métodos mais recentes usam técnicas complicadas pra descobrir onde as legendas podem ir sem se sobrepor. Mas esses métodos podem ser lentos e complicados, especialmente quando tem muitas marcações ou se as marcações são grandes.

Nesse trabalho, a gente apresenta uma nova maneira de colocar legendas usando um método de Bitmap. Um bitmap é uma grade que ajuda a gente a acompanhar onde as marcações estão localizadas. Ao rasterizar (ou converter) as marcações em um formato de bitmap com base no espaço que ocupam no gráfico, a gente consegue rapidamente ver onde colocar as legendas sem causar Sobreposição.

Esse sistema de bitmap permite que a gente coloque as legendas de forma eficiente, seja com muitas marcações ou se as marcações são formas complicadas. Ele funciona mais rápido que os métodos anteriores e consegue resultados semelhantes em termos do número de legendas colocadas.

Importância das Legendas em Texto

As legendas em texto ajudam a fornecer detalhes sobre pontos de dados específicos nos gráficos. Pra garantir clareza, essas legendas não devem se sobrepor com outros elementos gráficos. Como colocar as legendas manualmente pode demorar bastante, pesquisas anteriores já olharam pra métodos automáticos de rotulagem.

No entanto, como a posição das legendas muitas vezes depende da colocação de outras legendas, achar o arranjo perfeito pode ser muito difícil. O problema fica ainda mais complicado quando a gente considera que alguns métodos podem demorar bastante pra rodar, especialmente em aplicações interativas.

Pra acelerar as coisas, alguns algoritmos usam um método mais simples chamado abordagem gananciosa. Isso significa que eles rapidamente encontram posições preferidas para cada legenda e as colocam ali se os lugares estiverem livres. Se todas as opções resultarem em sobreposição, eles pulam aquela legenda específica. Esse método é muito mais rápido, mas ainda tem dificuldades em determinar se as legendas estão se sobrepondo.

Detecção Eficiente de Sobreposição

Um método simples pra verificar sobreposições é comparar a posição de uma nova legenda com todas as legendas existentes. No entanto, essa abordagem pode ficar muito lenta quando tem muitos pontos de dados em um gráfico.

Um método mais rápido chamado Rotulação Baseada em Partículas analisa grupos de pontos conhecidos como partículas pra verificar sobreposições. Essa estratégia funciona bem para formas pequenas como pontos em um gráfico de dispersão, mas pode exigir muitos cálculos para formas maiores.

Nosso objetivo é tornar os algoritmos de colocação de legendas mais rápidos e eficientes ao melhorar como verificamos as sobreposições. A gente apresenta nosso sistema de bitmap como uma nova maneira de acompanhar as sobreposições e facilitar a rotulagem de diferentes tipos de gráficos.

Bitmap para Colocação de Legendas Mais Rápida

O bitmap de Ocupação é uma ferramenta que ajuda a detectar rapidamente se uma nova legenda se sobrepõe a alguma marcação existente. O bitmap é uma grade bidimensional onde cada espaço indica se está ocupado ou não. O lance mágico desse sistema é que ele permite que a gente use verificações rápidas pra ver se uma legenda pode ser colocada em uma posição específica.

Quando a gente rasteriza (ou cria uma imagem) das marcações no bitmap, conseguimos checar rapidamente se os espaços estão livres pra novas legendas. A velocidade da verificação de sobreposições é boa porque depende apenas do tamanho do gráfico e da legenda, não da complexidade ou do número de marcações existentes.

Essa nova abordagem de bitmap facilita ver se um espaço está disponível pra uma legenda e marcar como ocupado depois que a legenda é colocada. Isso significa que a gente pode checar e atualizar rapidamente os espaços conforme novas legendas são adicionadas.

Aplicando o Método Bitmap

A gente testou nosso método de rotulação com bitmap em diferentes tipos de gráficos, incluindo gráficos de dispersão, gráficos de linha e mapas. O algoritmo funciona primeiro rasterizando todas as marcações no bitmap e então colocando todas as legendas de uma vez.

Para gráficos de dispersão e dispersão conectada, usamos o bitmap pra verificar se as posições candidatas ao redor das marcações estão disponíveis. Em gráficos de linha, colocamos uma legenda no final de cada linha. Para mapas, novamente usamos o bitmap pra checar se as posições candidatas estão livres.

Comparação com Outros Métodos

Pra ver como nosso método de bitmap se sai em comparação com as abordagens existentes, a gente comparou com a Rotulação Baseada em Partículas em um mapa que incluía muitos aeroportos e suas conexões. Nosso algoritmo de bitmap teve um desempenho consistentemente melhor, sendo pelo menos 22% mais rápido enquanto colocava um número semelhante de legendas.

Rotulação em Gráficos de Área Empilhada

Em gráficos de área empilhada, as legendas podem ir a qualquer lugar dentro da área que representam, mas ter elas em espaços mais abertos é uma boa estratégia. Se uma legenda não tiver espaço suficiente dentro da área, ela pode se estender um pouco pra fora, desde que não se sobreponha a outras legendas e que o centro da legenda esteja dentro da área.

Pra colocar legendas em gráficos de área empilhada, usamos um algoritmo diferente que se baseia no bitmap, mas foca na própria área. Primeiro, a gente rasteriza os limites das áreas no bitmap. Depois, procuramos possíveis lugares dentro dessas áreas pra colocar as legendas.

A gente explora dois métodos pra encontrar esses lugares: um que considera todos os pixels dentro da área pra achar a melhor colocação e outro que restringe a busca com base nos pontos de dados que definem a área. A segunda abordagem é mais rápida, mas pode não sempre encontrar o melhor espaço livre ao redor de cada legenda.

Integração no Vega

No Vega, nosso algoritmo de rotulagem é integrado como uma transformação que rearranja as Marcas de texto pra garantir que não haja sobreposições. Isso é feito usando três partes principais: definindo as marcas base, as marcas de texto representando as legendas, e ligando essas através de geometria reativa, que permite que o texto extraia informações das marcas base.

Integração no Vega-Lite

No Vega-Lite, incluímos as legendas como canais de codificação em vez de através de uma transformação. Essa escolha de design torna mais fácil pros usuários adicionarem legendas, já que eles não precisam saber sobre o funcionamento interno complexo do Vega. As legendas podem ser tratadas como apenas mais uma característica das marcas, semelhante a cor ou posição.

Comportamentos Padrão e Configuração

A gente garante que o processo de rotulagem seja fácil de usar, fornecendo comportamentos padrão dependendo do tipo de marca que está sendo usada. Por exemplo, as legendas pra marcas de barra são colocadas nas extremidades das barras, enquanto as legendas pra pontos e outras formas são colocadas perto desses pontos.

A configuração permite que os usuários definam até onde as legendas podem se estender, e a gente incorpora diferentes métodos sobre como as legendas são organizadas. A escolha dos métodos e suas configurações ajuda os usuários a personalizarem seus gráficos pra uma melhor clareza visual.

Conclusão e Direções Futuras

A gente apresentou o bitmap de ocupação como uma nova maneira de detectar rapidamente sobreposições entre legendas e outras marcas gráficas em gráficos. Quando combinado com nosso algoritmo de colocação gananciosa de legendas, esse método funciona bem em vários tipos de gráficos.

Mostramos que nosso algoritmo baseado em bitmap roda mais rápido que os métodos anteriores, enquanto mantém um número eficaz de legendas colocadas. Ao integrar nosso sistema de rotulagem no Vega e Vega-Lite, facilitamos pra os usuários criarem visualizações claras sem se preocupar com sobreposições de legendas.

Trabalhos futuros podem incluir a aplicação dessa técnica de bitmap em outros tipos de gráficos que precisam de estratégias de colocação diferentes. A gente pretende melhorar as experiências interativas otimizando como as legendas são renderizadas durante ações como zoom e pan, garantindo clareza e velocidade pra usuários com conjuntos de dados maiores.

Fonte original

Título: Legible Label Layout for Data Visualization, Algorithm and Integration into Vega-Lite

Resumo: Legible labels should not overlap with other labels and other marks in a chart. When a chart contains a large number of data points, manually positioning these labels for each data point in the chart is a tedious task. A labeling algorithm is necessary to automatically layout the labels for a chart with a large number of data points. The state-of-the-art labeling algorithm detects overlaps using a set of points to approximate each mark's shape. This approach is inefficient for large marks or many marks as it requires too many points to detect overlaps. In response, we present a bitmap-based label placement algorithm, which leverages an occupancy bitmap to accelerate overlap detection. To create an occupancy bitmap, we rasterize marks onto a bitmap based on the area they occupy in the chart. With the bitmap, we can efficiently place labels without overlapping existing marks, regardless of the number and geometric complexity of the marks. This bitmap-based algorithm offers significant performance improvements over the state-of-the-art approach while placing a similar number of labels. We also integrate this algorithm into Vega-Lite as one of its encoding channels, label encoding. Label encoding allows users to encode fields in each data point with a text label to annotate the mark that represents the data point in a chart.

Autores: Chanwut Kittivorawong

Última atualização: 2024-08-02 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2405.10953

Fonte PDF: https://arxiv.org/pdf/2405.10953

Licença: https://creativecommons.org/licenses/by/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais do autor

Artigos semelhantes