Ajustando uma nuvem de palavras / tags nos limites geográficos

15

Existem ferramentas disponíveis ou métodos recomendados para exibir uma tag ou nuvem de palavras (também conhecida como wordle ) em um mapa do mundo, assim como neste exemplo: Mapa: Estados Unidos dos sobrenomes ? (Pode haver outros exemplos no NY Times.)

Observe que, no exemplo acima, word é localizada por coordenadas fixas, enquanto a turvação de texto pode ser implementada com o algoritmo wordle (conforme descrito em SO ) de maneira automática. Então, existe um software que permite que você coloque palavras aleatoriamente em um determinado país ou você acha que é melhor ajustar o algoritmo original do wordle (por exemplo, adicionando restrições com base em fronteiras predefinidas)?

chl
fonte
possível duplicata de nuvens de tags espaciais - "tag mapeia"
Subterrâneo
@underdark Obrigado por apontar esse tópico. No entanto, parece-me mais relacionado à identificação geográfica, enquanto estou procurando uma solução em que não precisamos associar coordenadas espaciais conhecidas (por exemplo, cidade ou condados) a cada palavra. Em outras palavras, deixe o layout das palavras em um país estar livre de restrições que não sejam suas fronteiras reais. Se outros acharem que é realmente uma duplicata, posso removê-la sem nenhum problema.
chl 02/02
@chl: Então a localização das palavras dentro dos limites não tem significado? Então não é duplicado.
Underdark
@underdark Sim, exatamente. A idéia principal do wordle é tentar encontrar um layout espacial bonito com palavras dimensionadas por suas frequências relativas. Então, eu apenas quero restringir a escolha de possíveis coordenadas (x, y) nas "bordas".
chl
Existem alguns tópicos de tag / nuvem aqui no GSE. gis.stackexchange.com/search?q=tag+cloud Parece que deve haver algum esforço (talvez iniciado pela comunidade de troca de pilhas) para diferenciar nuvem de tag / nuvem. Mesmo com a tag na minha pesquisa, obtive "parece" todos os threads da nuvem retornados. Talvez possamos começar uma discussão sobre a meta para discutir. Ou talvez não incomode mais ninguém. ???
Brad Nesom

Respostas:

4

Seria necessário muito pouco ajuste: aproximar o limite do polígono por linhas isotéticas (isto é, segmentos horizontais e verticais) e, como condições iniciais, colocar caixas (com conteúdo em branco) alinhadas ao longo dessas linhas no exterior do polígono e no interior da caixa delimitadora do polígono. Nesse ponto, a configuração pareceria exatamente como se o algoritmo Wordle estivesse em andamento há algum tempo e colocasse as primeiras palavras em torno do perímetro da caixa delimitadora. Deixe o algoritmo assumir a partir daí.

Com efeito, isso equivale a representar o polígono com um quadtree desde o início e reproduzir exatamente o algoritmo de Wordle.

Se você não estiver colocando milhares de palavras no polígono e tiver um pouco de tempo de computação disponível, não precisará codificar um índice espacial: é possível executar a detecção de colisão usando comparações de força bruta de todos os pares de as caixas delimitadoras. Com um pouco mais de trabalho, você pode manter listas dos locais das palavras classificadas pelas coordenadas x e y e explorar essas listas para otimizar o algoritmo de detecção de colisão.

whuber
fonte
6

Muito truque. Eu mesmo estou tentando fazer algo assim, mas produzir mapas tipográficos como este do Axis Maps.

insira a descrição da imagem aqui

Você pode tentar algo com qgis ou mapnik, o básico seria:
1) Conte as palavras e gere um peso pelo número de ocorrências.
2) gerar pontos aleatórios dentro de um polígono.
3) para cada ponto, faça o upload de uma palavra e seu peso para atribuir à tabela.
4) Desenhe o texto com o tamanho da fonte com base no peso.

Você também pode adicionar uma rotação aleatória e cores à tabela.

Pablo
fonte
(+1) Obrigado por apontar os mapas tipográficos. Isso me lembra que me deparei com coisas legais alguns meses atrás. Vou tentar, mas fiquei pensando se o código Python disponível contribuído por @aeby no SO também não seria útil, desde que eu adicione restrições aos limites dos países. Não conheço o QGis o suficiente, mas tentarei aprender.
chl
Colocar palavras em pontos uniformemente aleatórios geralmente produzirá muitas sobreposições. Se as palavras são dimensionadas uniformemente para quase preencher o polígono - que na maioria dos casos é a situação desejável -, o uso de pontos aleatórios certamente não funcionará. Seria um bom começo para um algoritmo de recozimento espacial simulado, no entanto :-).
whuber
Eles não se sobrepõem porque qgis e mapnik têm detectores de colisão. Mas algumas palavras serão suprimidas. Existem muitos outros problemas, como, quantas palavras você precisaria dependendo do tamanho do polígono?
194 Pablo Pablo
@whuber, Seguindo sua ideia, Talvez em vez de pontos aleatórios, o algoritmo possa começar a preencher o polígono com outros polígonos com o tamanho da palavra do canto superior esquerdo até o botão direito. depois rotule esses polígonos.
194 Pablo Pablo
5

Tagxedo parece bom. Pena que ele usa o Silverlight.

underdark
fonte
(+1) Parece bom, embora seja melhor não confiar no Silverlight.
chl 02/02