Округлить точки с похожими значениями на диаграмме рассеяния, используя R и ggplot2 - PullRequest
0 голосов
/ 19 июня 2019

У меня есть данные как триплет XYZ.Для каждой пары XY существует значение Z.Я хотел бы построить XY-пары в точечной диаграмме и округлить значения te, как в следующем примере

enter image description here

В MWE я бы хотелокруглите значения Z в 3 категориях:

  • Менее 5
  • Менее 10
  • Менее 15

Любая помощь, пожалуйста

  library(ggplot2)

x <- c(1,1.2,1.1,2,2.1,2.1,2.9,3,3.2)
y <- rep(seq(0,8,4),3)
z <- c(2,3,5,8,7,9,13,15,12)

DF <- data.frame(x,y,z)

ggplot(DF, aes(x,y,z)) +
  geom_point() +
  geom_text(label = z,
            hjust = 0,
            nudge_x = 0.05,
            nudge_y = 0.05)

enter image description here

1 Ответ

1 голос
/ 19 июня 2019

Библиотека ggalt может помочь вам выполнить трюк с помощью функции geom_encircle() следующим образом:

library(ggplot2)
library("ggalt")

x <- c(1,1.2,1.1,2,2.1,2.1,2.9,3,3.2)
y <- rep(seq(0,8,4),3)
z <- c(2,3,5,8,7,9,13,15,12)

DF <- data.frame(x,y,z)

ggplot(DF, aes(x,y,z)) +
  geom_point() +
  geom_text(label = z,
            hjust = 0,
            nudge_x = 0.05,
            nudge_y = 0.05)+
geom_encircle(data=subset(DF, z<5), 
              color="red", 
              size=1, expand=0.04)+
geom_encircle(data=subset(DF, z<10), 
                color="blue", 
                size=1, 
                expand=0.06)+
geom_encircle(data=subset(DF, z<15), 
                color="black", 
                size=1, 
                expand=0.08)+ 
xlim(0,4)+ylim(-1,10)

enter image description here

Для получения дополнительной информацииcheck https://rdrr.io/cran/ggalt/man/geom_encircle.html Ура!

...