Как создается график «Соединенные Штаты Reddit»?

9

Ниже приведен график из р. 202 из Dataclysm Кристиана Руддера , хотя это было сделано Джеймсом Доуделлом. Он иллюстрирует отношения между различными 200 верхними подразделами, которые представляют интерес на reddit.com, где пользователи могут отправлять ссылки, комментарии и голоса. Это похоже на теги на этом сайте. Размер субреддитных регионов отражает их популярность. Подредакты сгруппированы с помощью перекрестных комментариев, а более темный оттенок представляет процент людей, которые остаются в этом подредите и не публикуют сообщения для других.

Это просто стандартное разбиение Вороного, с некоторой окраской для замкнутости, или это нечто более сложное?

Как можно сделать один из них?

Соединенные Штаты Реддит

Димитрий Васильевич Мастеров
источник
3
Я не знаю, но я предполагаю, что это картограмма Вороного - один корректирует центры точек (не показаны), пока каждая из областей области Вороного не будет пропорциональна заданному значению.
whuber

Ответы:

7

Во-первых, я Джеймс Доуделл, поэтому я достаточно квалифицирован, чтобы отвечать (создал учетную запись, чтобы ответить, может подтвердить личность, если кто-то беспокоится).

Простой ответ - это то, что и предполагали другие: это http://en.wikipedia.org/wiki/Voronoi_diagram . Мы использовали ту же концепцию на странице 194, где на сайтах вороной есть пары широты и долготы, перечисленные на craigslist.org.

К сожалению, сами эти знания на самом деле не очень полезны. С графиком Craigslist ясно, какие значения использовать для сайтов. Но какой фокус использовал Dataclysm для назначения координат x / y на этом графике?

Ответ на этот вопрос гораздо сложнее, чем ожидал бы большинство людей, и я не могу сказать, что рекомендую повторить то, что мы сделали. Могу поспорить, что кто-то еще может порекомендовать подход, который дает более или менее тот же результат и гораздо проще.

Правда в том:

Кристиан и я более трех месяцев ходили туда-сюда, создавая графики для этой главы, чтобы мы никогда не могли работать. Но результаты одного подхода часто включаются в следующий.

  1. К сожалению, самая важная вещь связана с техникой и некоторыми активами изображений, которые я не могу исследовать или делиться каким-либо значимым способом, потому что мы все еще можем их как-то использовать. Что я скажу, так это то, что мы взяли сложный http://en.wikipedia.org/wiki/Graph_theory#Graph, который мы скомпилировали с разрешения данных Reddit, включая идентификаторы пользователей и подредакты, и мы поиграли с этим графиком и различными производными об этом внутри http://gephi.github.io/(Я особенно фанат "OpenOrd" в эти дни). На самом деле мы получили великолепное изображение - было бы основным моментом книги, если бы она была опубликована - но хотя она работала бы хорошо на веб-сайте, она плохо печаталась в книге - не хватало места или разрешения. Изначально Кристиан рассматривал вопрос о том, чтобы включить его в книгу, но это не было экономически выгодным для Короны.

  2. Однако в этот момент у нас было изображение, которое имело координаты x / y для подредактов, и они были, по крайней мере, относительно правильно расположены в пространстве x / y. Мы также спешили, потому что приближался крайний срок публикации. Сначала я программист, а потом парень, занимающийся данными, поэтому, чтобы учесть чрезвычайно жесткие границы страницы в книге и время, оставшееся на часах, я хотел написать в Box2D программу, которая имитировала бы границы страницы как стены, поместите в него чрезвычайно сжатую версию графика и смоделируйте рост этих узлов (кстати, это не естественно для Box2D, он ожидает, что твердые тела не изменятся), пока все не окажется на одном уровне со стенами и друг с другом. Узлы росли со скоростью, пропорциональной размеру представляемого ими subreddit, что означало, что окончательные размеры также будут пропорциональны.скриншот программы box2d во время работы

  3. В результате это выглядело не очень хорошо, но оно дало мне нечто очень ценное: сайты вороной. Я взял центроиды полученных многоугольников box2d, провел их через стандартный процесс, и это то, что было использовано для графика в книге. Я считаю, что текстовые метки наносились вручную в фотошопе.

Кстати, окраска ячейки была связана с статистикой, которую мы разработали, чтобы сформировать график обратно в (A)

jdowdell
источник
1
Добро пожаловать на сайт. Это близко к тому, как я пытался это сделать. Используйте любой макет графика, чтобы назначить координаты xy узлам. (В некоторых макетах, основанных на силе, может быть возможно сделать ячейки приблизительно того размера, который вы хотите, основываясь на заданных весах и массе ребер, но я сомневаюсь, что они будут точными.) После создания областей вороной исходной компоновки графа я бы используйте инструмент картограммы, такой как Scapetoad , чтобы сделать конечные области пропорциональными статистике интереса. Это в конечном итоге очень похоже на программу, которую вы предлагаете в box2d.
Энди W
0

Это больше похоже на проблему облака слов с появлением многоугольника Вороного. Вам нужно использовать частоту слова, чтобы определить местоположение (высокочастотный означает центр). Пока местоположение слов определено, рисование многоугольника Вороного не должно иметь большого значения.

Xiaoyue
источник