Hy, I have this:
library(ggplot2)
data.frame(obs=c("X1","X2","X3","X4","X5","X6","X7","X8","X9","X10","X11","X12","X13","X14","X15","X16","X17","X18","X19","X20","X21","X22","X23","X24"),
V1=c(0.12299204,0.82459186,0.74426426,0.74518490,0.90235626,0.80238518,0.14670287,0.29485058,0.15263963,0.35564952,0.74018218,0.90043726,0.89870240,0.11331604,0.38224485,0.30905100,0.16173775,0.06165922,0.16236031,0.19410052,0.15621499,0.14355361,0.09841802,0.14200906),
V2=c(-0.07667381, 0.05661226,-0.06755684, 0.24279246, 0.20566121, 0.09090093,-0.15771084, 0.68288156, 0.05995853, 0.17265401, 0.10524241, 0.28202393, 0.13269340,-0.06152291, 0.14251037, 0.32915325,-0.15536643,-0.06455349, 0.89639327, 0.25273722,-0.12570665, 0.95207149, 0.32158002, 0.93175509),
V3=c( 0.785128638, 0.137638800, 0.413372884, 0.071252925, 0.153475018, 0.288985725,-0.003831879,-0.035310199, 0.149559691, 0.180806799,-0.011326334,-0.029067359, 0.093260484,-0.053193781,-0.068764135, 0.123221407,-0.044328208, 0.857713525, 0.104352647, 0.807427676, 0.504358226,-0.013406375, 0.751067158, 0.105874634),
V4=c(-0.017742238, 0.216325083, 0.121780449, 0.114055328, 0.078455652, 0.218005225, 0.405876010,-0.089009642, 0.099241491, 0.107780652, 0.248500052, 0.050069182, 0.219363523,-0.094918144, 0.725727266, 0.724975094, 0.621679968,-0.118206228, 0.145886691, 0.249329008,-0.188579718, 0.049934405, 0.007372841, 0.025672350),
V5=c( 0.01547677, 0.16555178, 0.26019454, 0.08977182, 0.21660527, 0.35163419, 0.71035498, 0.35886762, 0.87849390,-0.01351151,-0.35429053, 0.02127159,-0.05830117,-0.05454903, 0.06498632, 0.06387208, 0.21214453,-0.07420916,-0.11399133, 0.13361320, 0.17796307,-0.01886769, 0.16513371,-0.02091601),
V6=c( 0.071459381, 0.103824145, 0.296293694, 0.318562131, 0.026584128, 0.044575715, 0.394070695, 0.301593577,-0.070145516, 0.815826736, 0.204876351,-0.006624310, 0.087139899,-0.008305995, 0.088330589, 0.229090697,-0.256193405,-0.068229882, 0.059314345, 0.163380601, 0.603980086,-0.020015746, 0.219288132,-0.040558617),
V7=c( 0.0937721448, 0.1257961637, 0.0818954368, 0.3470549669,-0.0145647326, 0.0595075312,-0.0075184176,-0.1745364284,-0.0544797910, 0.0934216940,-0.0933605187,-0.1502702725, 0.0734903991, 0.9511026556,-0.1550272896,-0.0449080619, 0.0524177580,-0.1177789182, 0.0040840036,-0.0208707253,-0.1842557001, 0.0124933572,-0.0008850238,-0.0037866599),
group=c("I","I","II","II","II","II","III","III","III","II","II","II","II","III","III","III","III","II","II","II","II","III","III","III")
)->df
ggplot(y,aes(x = V1, y = V2,label=factor(obs), color=factor(group), shape =factor(group)))
geom_text_repel(show_guide=F)
geom_point(size=2)
guides(
colour = guide_legend(
override.aes = list(shape = c(15,16,17))
)
)
scale_shape(guide = FALSE)
labs(color="Legend")
guides(
shape = FALSE,
color = guide_legend(override.aes = list(shape = c(16,17,15))))
theme_classic()
Output:
I couldn't integrate the stat_ellipse function, any idea how to make the graph below?
Expected output:
CodePudding user response:
You need a variable/criteria for each ellipse, here an example for two random ellipses.
Data
ellipse1 <- c("X23","X20","X16","X10","X15","X18","X14","X1","X21","X7")
df <-
data.frame(
obs=c("X1","X2","X3","X4","X5","X6","X7","X8","X9","X10","X11","X12","X13","X14","X15","X16","X17","X18","X19","X20","X21","X22","X23","X24"),
V1=c(0.12299204,0.82459186,0.74426426,0.74518490,0.90235626,0.80238518,0.14670287,0.29485058,0.15263963,0.35564952,0.74018218,0.90043726,0.89870240,0.11331604,0.38224485,0.30905100,0.16173775,0.06165922,0.16236031,0.19410052,0.15621499,0.14355361,0.09841802,0.14200906),
V2=c(-0.07667381, 0.05661226,-0.06755684, 0.24279246, 0.20566121, 0.09090093,-0.15771084, 0.68288156, 0.05995853, 0.17265401, 0.10524241, 0.28202393, 0.13269340,-0.06152291, 0.14251037, 0.32915325,-0.15536643,-0.06455349, 0.89639327, 0.25273722,-0.12570665, 0.95207149, 0.32158002, 0.93175509),
group=c("I","I","II","II","II","II","III","III","III","II","II","II","II","III","III","III","III","II","II","II","II","III","III","III")
) %>%
as_tibble() %>%
mutate(
ellipse = case_when(
obs %in% ellipse1 ~ 1,
TRUE ~ 2
)
)
How to
df %>%
ggplot(aes(x = V1, y = V2,label=factor(obs), color=factor(group), shape =factor(group)))
geom_text_repel(show.legend = FALSE)
geom_point(size=2)
guides(
shape = FALSE,
colour = guide_legend(
override.aes = list(shape = c(16,17,15))
)
)
labs(color="Legend")
theme_classic()
stat_ellipse(aes(group = ellipse), linetype = "dashed")