Bubble plot with ggplot2 in R - GeeksforGeeks

18 Jul, 2021
 A bubble plot is a data visualization that helps to displays multiple circles (bubbles) in a two-dimensional plot as same in a scatter plot. A bubble plot is primarily used to depict and show relationships between numeric variables.
With ggplot2, bubble plots can be built using geom_point() function. At least three variables must be provided to aes() that are x, y, and size. The legend will automatically be displayed by ggplot2.
Syntax:
ggplot(data, aes(x, y, size)) + geom_point()
Size in the above syntax, will take in the name of one of the attributes based on whose values the size of the bubbles will differ.
Example: Creating bubble plot
R
# importing the ggplot2 librarylibrary(ggplot2)  # creating data set columnsx <- c(12,23,43,61,78,54,34,76,58,103,39,46,52,33,11,9,60)y <- c(12,54,34,76,54,23,43,61,78,23,12,34,56,98,67,36,54)r <- c(1,5,13,8,12,3,2,16,7,40,23,45,76,8,7,41,23)  # creating the dataframe from the above columnsdata <- data.frame(x, y, r)  ggplot(data, aes(x = x, y = y,size = r))+ geom_point(alpha = 0.7)
Output:
In the above example, all the bubbles appear in the same color, hence making the graph hard to interpret. The colors can be added to plot to make the bubbles differ from one another.
Example: Adding colors to the bubble plot
R
# importing the ggplot2 librarylibrary(ggplot2)  # creating data set columnsx <- c(12,23,43,61,78,54,34,76,58,103,39,46,52,33,11)y <- c(12,54,34,76,54,23,43,61,78,23,12,34,56,98,67)r <- c(1,5,13,8,12,3,2,16,7,40,23,45,76,8,7)  color <- c(rep("color1", 1), rep("color2", 2),           rep("Color3", 3), rep("color4", 4),           rep("color5", 5))# creating the dataframe from the above columnsdata <- data.frame(x, y, r, color)  ggplot(data, aes(x = x, y = y,size = r, color=color))+geom_point(alpha = 0.7)
Output:
Color can be customized using the palette. To change colors with RColorBrewer palette add scale_color_brewer() to the plot code of ggplot2
Syntax:
scale_color_brewer(palette=<Palette-Name>)
Example: Customizing colors of bubble plot in R
R
# creating data set columnsx <- c(12,23,43,61,78,54,34,76,58,103,39,46,52,33,11)y <- c(12,54,34,76,54,23,43,61,78,23,12,34,56,98,67)r <- c(1,5,13,8,12,3,2,16,7,40,23,45,76,8,7)  colors <- c(1,2,3,1,2,3,1,1,2,3,1,2,2,3,3)  # creating the dataframe from the # above columnsdata <- data.frame(x, y, r, colors)  # importing the ggplot2 library and# RColorBrewerlibrary(RColorBrewer)library(ggplot2)  # Draw plotggplot(data, aes(x = x, y = y,size = r, color=as.factor(colors))) + geom_point(alpha = 0.7)+ scale_color_brewer(palette="Spectral")
Output:
To change the size of bubbles in the plot i.e. giving the range of sizes from smallest bubble to biggest bubble, we use scale_size(). This allows setting the size of the smallest and the biggest circles using the range argument.
Syntax:
scale_size(range =< range-vector>)
Example: Changing size of the bubble plot
R
# creating data set columnsx <- c(12,23,43,61,78,54,34,76,58,103,39,46,52,33,11)y <- c(12,54,34,76,54,23,43,61,78,23,12,34,56,98,67)r <- c(1,5,13,8,12,3,2,16,7,40,23,45,76,8,7)  color <- c(rep("color1", 1), rep("color2", 2),           rep("Color3", 3), rep("color4", 4),           rep("color5", 5))sizeRange <- c(2,18)  # creating the dataframe from the above # columnsdata <- data.frame(x, y, r, color)  # importing the ggplot2 librarylibrary(ggplot2)  ggplot(data, aes(x = x, y = y,size = r, color=color))                 + geom_point(alpha = 0.7)                + scale_size(range = sizeRange, name="index")
Output:
To alter the labels on the axis, add the code +labs(y= “y axis name”, x = “x axis name”) to your line of basic ggplot code.
Example: Altering labels of bubble plot in R 
R
# creating data set columnsx <- c(12,23,43,61,78,54,34,76,58,103,39,46,52,33,11)y <- c(12,54,34,76,54,23,43,61,78,23,12,34,56,98,67)r <- c(1,5,13,8,12,3,2,16,7,40,23,45,76,8,7)  library("RColorBrewer")color <- brewer.pal(n = 5, name = "RdBu")  # creating the dataframe from the above columnsdata <- data.frame(x, y, r, color)  # importing the ggplot2 librarylibrary(ggplot2)ggplot(data, aes(x = x, y = y,size = r, color=color)) +geom_point(alpha = 0.7) + labs(title= "Title of Graph", y="Y-Axis label", x = "X-Axis Label")
Output:
To change legend position in ggplot2 add theme() to basic ggplot2 code.
Syntax:
theme(legend.position=<desired-position>)
Example: Changing legend position of bubble plot
R
# creating data set columnsx <- c(12,23,43,61,78,54,34,76,58,103,39,46,52,33,11)y <- c(12,54,34,76,54,23,43,61,78,23,12,34,56,98,67)r <- c(1,5,13,8,12,3,2,16,7,40,23,45,76,8,7)  library("RColorBrewer")color <- brewer.pal(n = 5, name = "RdBu")  # creating the dataframe from the above columnsdata <- data.frame(x, y, r, color)  # importing the ggplot2 librarylibrary(ggplot2)  ggplot(data, aes(x = x, y = y,size = r, color=color)) + geom_point(alpha = 0.7) + labs(title= "Title of Graph",y="Y-Axis label", x = "X-Axis Label") +theme(legend.position="left")
Output:
Picked
R-ggplot
R Language
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Change Color of Bars in Barchart using ggplot2 in R
How to Change Axis Scales in R Plots?
Group by function in R using Dplyr
How to Split Column Into Multiple Columns in R DataFrame?
How to filter R DataFrame by values in a column?
How to import an Excel File into R ?
How to filter R dataframe by multiple conditions?
Replace Specific Characters in String in R
Time Series Analysis in R
R - if statement