The ggplot2 package has a geom_point command that is useful for creating scatter plots, but it was very cumbersome to adjust the position of the plot symbols when trying to add text or label information to them. This is an introduction to a package that can solve such a problem.
Here is an example of running “geom_text_repel, geom_label_repel” from the “ggrepel” package, which adds text and labels to geom_points.
For reference, the ggiraph package includes the “ggeom_text_repel_interactive” and “ggeom_label_repel_interactive” commands for interactive display. An example of using the “geom_label_repel_interactive” command is shown at the end of the “Running commands” section.
Package version is 0.9.1. R version 4.2.2 is confirmed.
Install Package
Run the following command.
#Install Package install.packages("ggrepel")
Execute command
See the command and package help for details.
#Loading the library library("ggrepel") ###Creating Data Examples##### n <- 30 TestData <- data.frame(Group = sample(paste0("Group", 1:5), n, replace = TRUE), Data1 = rnorm(n), Data2 = rnorm(n) + rnorm(n) + rnorm(n)) ###Create a simple scatterplot with ggplot2##### PointPlot <- ggplot(TestData, aes(x = Data1, y = Data2, label = Group, color = Group, fill = Group)) + geom_point() #Plot PointPlot ###Add text to plots##### #Package ggplot2:geom_text command #PointPlot + geom_text() #Package ggrepel: geom_text_repel command PointPlot + geom_text_repel() #Plotting with a different look #ggplot2 graph elements can be used PointPlot + geom_text_repel( #Text appearance fontface = "bold", #Line color segment.color = "#4b61ba", #Line width segment.size = 1.5, #Distance to label min.segment.length = 0.1, #Exclude missing values na.rm = TRUE, #Hide legend show.legend = FALSE) ######## ###Labeling on plots##### #Package ggplot2:geom_label command #Text color is changed to white #PointPlot + geom_label(color = "white") #Package ggrepel: geom_label_repel command PointPlot + geom_label_repel(color = "white") #Plotting with a different look PointPlot + geom_label_repel( fontface = "bold", segment.color = "#4b61ba", segment.size = 1, min.segment.length = 0.1, na.rm = TRUE, show.legend = TRUE) + scale_fill_manual(values = c("#a87963", "#8a5136", "#6e5f72", "#28231e", "#d9bb9c")) ######## ###Extra:Interactive graphs using the ggiraph package##### #See the package #https://www.karada-good.net/analyticsr/r-376/ #Loading the library #Install the ggiraph package if it is not already there if(!require("ggiraph", quietly = TRUE)){ install.packages("ggiraph");require("ggiraph") } ###Add data for interactive use##### #Creation of tooltip data:tooltip TestData$tooltip <- paste0( "グループ名 <br/>", TestData[, 1]) #Create content to be displayed with icon clicks:clickjs TestData$click <- sprintf("alert(\"%s%s%s%s\")", "X:", round(TestData[, 2], 2), ", Y:", round(TestData[, 3], 2)) #geom_label_repel_interactive command PointPlot <- ggplot(TestData, aes(x = Data1, y = Data2, tooltip = tooltip, onclick = click, label = Group, color = Group, fill = Group)) + geom_point() + geom_label_repel_interactive( fontface = "bold", segment.color = "#4b61ba", segment.size = 1, min.segment.length = 0.1, na.rm = TRUE, show.legend = TRUE) + scale_fill_manual(values = c("#a87963", "#8a5136", "#6e5f72", "#28231e", "#d9bb9c")) #Plot girafe(ggobj = PointPlot)
Output Examples
・geom_text_repel command:base
・geom_text_repel command:change
・geom_label_repel command:base
・geom_label_repel command:change
・Interactive graphs using the ggiraph package
I hope this makes your analysis a little easier !!