Я пытаюсь обозначить довольно простую диаграмму рассеяния в R. Это то, что я использую:
plot(SI, TI)
text(SI, TI, Name, pos=4, cex=0.7)
Результат посредственный, как вы можете видеть (нажмите, чтобы увеличить):
Я пытался компенсировать это с помощью textxy
функции, но это не лучше . Увеличение самого изображения не работает для плотных кластеров.
Есть ли какая-либо функция или простой способ компенсировать это и позволить R наносить метки, которые не перекрываются ?
Вот небольшое подмножество данных, которые у меня есть:
Name;SI;TI
01_BAD_talking_head;6.944714;4.421208
01_GOOD_talking_head;5.680141;4.864035
01_GOOD_talking_head_subtitles;7.170114;4.664205
identify()
давайте сами решим, где разместить этикетку! Это не идеально, но из предложенных решений это работает лучше всего для меня.Ответы:
Проверьте новый пакет ggrepel . ggrepel предоставляет geoms для ggplot2 для отражения перекрывающихся текстовых меток. Работает как для geom_text, так и для geom_label.
Рисунок взят из этого поста .
источник
directlabels
Пакет делает это. С его веб-страницы :Хотя это не всегда возможно для плотных участков.
Вот краткий пример:
Мне удалось избавиться от точки окраски
col="black"
, но не метки.источник
direct.label(xyplot(SI~TI,data=yourDataFrame,group=Name))
должно получить аналогичный результат.library(lattice)
чтобы добратьсяxyplot
до работы.Я бы посоветовал вам взглянуть на
wordcloud
пакет. Я знаю, что этот пакет фокусируется не только на точках, но и на самих этикетках, а также стиль кажется довольно фиксированным. Но, тем не менее, результаты, которые я получил от его использования, были ошеломляющими. Также обратите внимание, что версия пакета, о которой идет речь, была выпущена примерно в то время, когда вы задавали вопрос, поэтому она все еще очень новая.http://blog.fellstat.com/?cat=11
источник
Я столкнулся с похожей проблемой с несколькими графиками, с которыми работал, и написал базовый пакет, в котором для моделирования местоположения объектов используется моделирование силового поля. Преимущество перед некоторыми из приведенных выше решений заключается в динамической настройке относительной близости объектов в 2D. Несмотря на то, что возможны значительные улучшения, включая эвристику и интеграцию с ggplot и т. Д., Похоже, задача выполнена. Следующее иллюстрирует функциональность:
На данный момент нет эвристики для различных областей и распределений точек, так как решение удовлетворяло мои потребности, и я хотел быстро найти что-то полезное для людей, но я добавлю их в среднесрочной перспективе. В настоящее время я рекомендую масштабировать графики до 100x100 и обратно и слегка подправить параметры притяжения и отталкивания по умолчанию в соответствии с требованиями.
источник
В случае, если вы просто не можете заставить метки работать правильно, как в R, имейте в виду, что вы всегда можете сохранить графики в векторном формате (например, .pdf) и перетащить их в программу редактирования, такую как InkScape или Adobe Illustrator.
источник
Несколько дополнительных инструментов, на которые можно посмотреть в R:
spread.labels
Функция вplotrix
пакетеthigmophobe.labels
вplotrix
упаковкеspread.labs
функция вTeachingDemos
пакетеTkIdentify
функция вTeachingDemos
пакетеОни не сделают все для вас, но один из них может быть частью решения.
источник