Як уникнути перекриття міток у R-графіці? [зачинено]


44

Я намагаюся позначити досить простий розсіювач у Р. Це я використовую:

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

1
Я розмістив подібне запитання тут , подивіться на відповіді там ..
Цікаво

3
Я знайшов рішення ! identify()Давайте вручну вирішити , де розмістити ярлик! Це не ідеально, але із запропонованих рішень це найкраще працює для мене.
Цікаво

Відповіді:



19

directlabelsПакет робить це. З його веб-сторінки :

Цей пакет є спробою перетворити пряме маркування на реальність у повсякденній статистичній практиці, зробивши доступним цілий ряд корисних функцій, які роблять пряме маркування загальних сюжетів простим у виконанні за допомогою графіків високого рівня, таких як решітка та ggplot2.

Хоча це не завжди можливо для щільних ділянок.

Ось короткий приклад:

set.seed(123)
a <- c(rnorm(10,-3,2),rnorm(10,3,2))
b <- c(rnorm(10,-3,2),rnorm(10,3,2))
dfr <- data.frame(a,b)
dfr$t <- c(paste("A",1:10,sep=""),paste("B",1:10,sep=""))
direct.label(xyplot(b~a,dfr,groups=t, col="black"))

Мені вдалося позбутися точкового забарвлення за допомогою col="black", але не міток.


1
У мене виникають труднощі з налагодженням його роботи. Не могли б ви надати простий робочий приклад?
slhck

1
У вашому випадку щось подібне direct.label(xyplot(SI~TI,data=yourDataFrame,group=Name))повинно отримати аналогічний результат.
Лоран

Ідеально. Ось що я закінчив, використовуючи ваш останній простий приклад. Кольорові мітки та крапки насправді дуже приємні, адже ви знаєте, куди належать мітки.
slhck

1
Мені довелося скористатися, library(lattice)щоб дістатися xyplotдо роботи.
Девід Дж. Харріс

14

Я б запропонував вам поглянути на wordcloudпакунок. Я знаю, що цей пакет фокусується не саме на пунктах, а на самих етикетках, а також стиль здається досить виправленим. Але все-таки результати, отримані від його використання, були досить приголомшливими. Також зауважте, що розглянутий варіант пакета був випущений приблизно у той момент, коли ви задали це питання, тому він все ще дуже новий.

http://blog.fellstat.com/?cat=11

textplot () вихід


9

Я зіткнувся з подібною проблемою з декількома сюжетами, з якими працював, і написав базовий пакет, який використовує силове моделювання поля для коригування розташування об'єктів. Перевага перед деякими з цитованих вище рішень - це динамічне регулювання відносної близькості об'єкта в 2D. Хоча можливе багато вдосконалення, включаючи евристику та інтеграцію з ggplot тощо., Здається, це може виконати завдання. Далі ілюструється функціональність:

install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()

Наразі не існує евристики для різних областей та розподілів точок, оскільки рішення відповідало моїм потребам, і я хотів швидко отримати щось корисне, але я додам їх у середньостроковій перспективі. У цей час я рекомендую масштабувати діаграми до 100x100 і назад і трохи підлаштовувати параметри притягання та відштовхування за замовчуванням як гарантовані.


8

У випадку, якщо ви просто не можете змусити етикетки працювати належним чином як створено R, пам’ятайте, що ви завжди можете зберегти графіки у векторному форматі (наприклад, .pdf) та перетягнути їх у програму редагування, наприклад InkScape або Adobe Illustrator.


8

Кілька додаткових інструментів, на які слід звернути увагу на R:

Вони не зроблять все для вас, але одна з них може бути частиною рішення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.