Bir kelime / etiket bulutunu coğrafi sınırlara sığdırma


15

Bu örnekte olduğu gibi, bir dünya haritasında bir etiket veya kelime bulutu ( wordle olarak da bilinir ) görüntülemek için mevcut araçlar veya önerilen yöntemler var mı : Harita: Soyadları Birleşik Devletleri ? (NY Times'da başka örnekler de olabilir.)

Yukarıdaki örnekte, sözcüğün sabit koordinatlarla yer aldığını, oysa metin bulutlamanın wordle algoritmasıyla (SO'da açıklandığı gibi ) otomatik bir şekilde uygulanabileceğini unutmayın. Yani, belirli bir ülkede kelimeleri rastgele koymanıza izin veren bir yazılım var mı, yoksa orijinal kelime algoritmasını değiştirmenin en iyi yol olduğunu mu düşünüyorsunuz (örneğin, önceden tanımlanmış sınırlara dayalı kısıtlamalar ekleyerek)?



@underdark Bu konuyu işaretlediğiniz için teşekkürler. Bununla birlikte, bana daha fazla coğrafi etiketleme ile ilgili görünüyor, oysa bilinen mekansal koordinatları (örneğin, kasaba veya ilçeler) her kelimeyle ilişkilendirmemiz gerekmeyen bir çözüm arıyorum. Başka bir deyişle, kelimelerin bir ülkeye yerleşiminin, gerçek sınırları dışında bir kısıtlama içermemesine izin verin. Diğerleri bunun gerçekten bir kopya olduğunu düşünüyorsa, herhangi bir prob olmadan kaldırabilirim.
chl

@chl: Peki kelimelerin sınırlar içindeki yerinin anlamı yok mu? O zaman kopya değil.
underdark

@underdark Evet, kesinlikle. Wordle'nin ana fikri, göreceli frekanslarıyla boyutlandırılmış kelimeler içeren iyi görünümlü bir mekansal düzen bulmaya çalışmaktır. Sonra, sadece "sınır" larda olası (x, y) koordinatların seçimini kısıtlamak istiyorum.
chl

GSE'de burada birkaç etiket / bulut dizisi var. gis.stackexchange.com/search?q=tag+cloud Bulutu etiket / buluttan ayırmak için biraz çaba harcanması (belki de yığın değişim topluluğu tarafından başlatılmış) gibi görünüyor. Aramalarımdaki etiketle bile, tüm bulut konuları geri döndü. Belki görüşmek üzere meta'da bir konu başlatabiliriz. Ya da belki kimseyi rahatsız etmez. ???
Brad Nesom

Yanıtlar:


4

Çok az ince ayar yapmak gerekir: çokgen sınırını izotetik çizgilerle (yani yatay ve dikey segmentler) yaklaşık olarak ayarlayın ve başlangıç ​​koşulları olarak, poligonun dışındaki ve iç kısmındaki çizgiler boyunca hizalanmış kutuları (boş içerikli) yerleştirin çokgenin sınırlayıcı kutusunun. Bu noktada yapılandırma, tam olarak Wordle algoritması bir süredir gidiyordu ve ilk kelimeleri sınırlayıcı kutunun çevresine yerleştirmiş gibi görünüyordu. Algoritma oradan devralsın.

Aslında bu, çokgeni başlangıçtan dörtlü olarak temsil etmek ve aksi takdirde tam olarak Wordle algoritmasını üretmek anlamına gelir.

Çokgene binlerce kelime yerleştirmiyorsanız ve yedeklemek için biraz bilgi işlem zamanınız varsa, hiç bir uzamsal dizini kodlamanız gerekmez: kaba kuvvet tüm çiftler karşılaştırmasını kullanarak çarpışma algılama yapabilirsiniz sınırlayıcı kutular. Biraz daha fazla çalışma ile x ve y koordinatlarına göre sıralanmış kelime konumlarının listesini tutabilir ve çarpışma algılama algoritmasını kolaylaştırmak için bu listelerden faydalanabilirsiniz.


6

Çok hile. Kendim böyle bir şey yapmaya çalışıyorum, ama gibi tipografik haritalar üretmek için bu Eksen Maps biri.

resim açıklamasını buraya girin

Qgis veya mapnik ile bir şey deneyebilirsiniz, temelleri şöyle olacaktır:
1) Kelimeleri sayın ve olay sayısına göre bir ağırlık oluşturun.
2) bir poligon içinde rastgele noktalar oluşturur.
3) her nokta için bir kelime yükleyin ve dikkat tablosuna ağırlık.
4) Ağırlığa göre yazı tipi boyutunda metin çizin.

Tabloya rastgele bir döndürme ve renkler de ekleyebilirsiniz.


(+1) Tipografik haritaları işaret ettiğiniz için teşekkür ederiz. Birkaç ay önce harika şeylerle karşılaştığımı hatırlatıyor. Ben bir denemek ama ben ülke sınırlarına kontrendikler eklemek şartıyla SO üzerinde @aeby katkıda mevcut Python kodunun çok yararlı olup olmadığını merak ediyordum . QGis hakkında yeterince bilgim yok ama öğrenmeye çalışacağım.
chl

Kelimelerin eşit olarak rastgele noktalara yerleştirilmesi genellikle birçok çakışma oluşturur. Kelimeler, çoğu durumda istenen durum olan çokgeni neredeyse doldurmak için eşit olarak ölçeklendirilirse, rastgele noktalar kullanmak işe yaramaz. Yine de, bir uzaysal simüle tavlama algoritması için iyi bir başlangıç ​​olurdu :-).
whuber

Çakışmayacaklar çünkü qgiler ve mapnik'in çarpışma dedektörleri var. Ama bazı kelimeler bastırılacak. Çokgen boyutuna bağlı olarak kaç kelimeye ihtiyacınız var?
Pablo

@whuber, ideia'nızı takiben, Belki rastgele noktalar yerine, algoritma çokgen diğer solucanları soldan sağa kadar kelime boyutu ile doldurmaya başlayabilir. sonra bu çokgenleri etiketleyin.
Pablo

5

Tagxedo iyi görünüyor. Çok kötü Silverlight kullanıyor.


(+1) İyi görünüyor, ancak Silverlight'a güvenmemek en iyisi olacaktır.
chl

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.