Текстовые метки на диаграмме рассеяния не перекрывают линию тренда в r (ggplot) - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь создать диаграмму рассеяния, используя ggplot. Есть ли способ, чтобы мои текстовые метки не перекрывали линию тренда?

Мне удалось только перестать накладывать друг на друга текстовые метки.

rownames = c("dummy", "dummy", "dummy", "dummy", "dummy", "dummy","dummy", "dummy", "dummy", "dummy")
corr_truth = c(-0.39, -0.13, 0.28, -0.49, -0.14, 0.52, 0.43, 0.22, -0.29, -0.02)
corr_pred= c(-0.41, 0.01, 0.36, -0.38, -0.28, 0.44, 0.26, 0.24, -0.38, -0.23)
corr_complete = data.frame(rownames, corr_truth,corr_pred)

plot_corr_complete = ggplot(data = corr_complete, aes(corr_truth, corr_pred)) + geom_point() + 
  xlim(-0.5,0.7) + 
  ylim(-0.5,0.7) +
  geom_text(label = corr_complete$rownames, nudge_x = 0.08, nudge_y = 0.005, check_overlap = T) +
  geom_smooth(method = "lm", se = FALSE, color = "black")
plot_corr_complete

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Пример использования ggrepel. Мне нужно было добавить некоторые отступы к решению, чтобы надписи не перекрывали линию тренда.

library(tidyverse);library(ggrepel)
rownames = c("dummy", "dummy", "dummy", "dummy", "dummy", "dummy","dummy", "dummy", "dummy", "dummy")
corr_truth = c(-0.39, -0.13, 0.28, -0.49, -0.14, 0.52, 0.43, 0.22, -0.29, -0.02)
corr_pred= c(-0.41, 0.01, 0.36, -0.38, -0.28, 0.44, 0.26, 0.24, -0.38, -0.23)
corr_complete = data.frame(rownames, corr_truth,corr_pred)

plot_corr_complete = ggplot(data = corr_complete, aes(corr_truth, corr_pred)) + geom_point() + 
  xlim(-0.5,0.7) + 
  ylim(-0.5,0.7) +
  geom_text_repel(label = corr_complete$rownames,point.padding = 0.2,
                  nudge_y = 0.005, nudge_x = 0.02) +
  geom_smooth(method = "lm", se = FALSE, color = "black")
plot_corr_complete
0 голосов
/ 06 ноября 2018

Пакет ggrepel предоставляет функции, позволяющие избежать наложения текстов. После установки пакета загрузите его перед запуском следующего кода Исправленный код работал с моей машины:

rownames = c("dummy", "dummy", "dummy", "dummy", "dummy", "dummy","dummy", "dummy", "dummy", "dummy")
corr_truth = c(-0.39, -0.13, 0.28, -0.49, -0.14, 0.52, 0.43, 0.22, -0.29, -0.02)
corr_pred= c(-0.41, 0.01, 0.36, -0.38, -0.28, 0.44, 0.26, 0.24, -0.38, -0.23)
corr_complete = data.frame(rownames, corr_truth,corr_pred)

plot_corr_complete = ggplot(data = corr_complete, aes(corr_truth, corr_pred, label = rownames)) + geom_point() + 
  xlim(-0.5,0.7) + 
  ylim(-0.5,0.7) +
  geom_text_repel() +
  geom_smooth(method = "lm", se = FALSE, color = "black")
plot_corr_complete

Надеюсь, это поможет

...