Dot Plots in ggplot2
How to make Dot Plots in ggplot2 with Plotly.
Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Sign up for early access now.
Default dotplot
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot()
plotly::ggplotly(p)
Increase dot size
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot(binwidth = 1.5)
plotly::ggplotly(p)
Using fixed-width bins.
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot(method="histodot", binwidth = 1.5)
plotly::ggplotly(p)
Various stack methods
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot(binwidth = 1.5, stackdir = "center")
plotly::ggplotly(p)
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot(binwidth = 1.5, stackdir = "centerwhole")
plotly::ggplotly(p)
Hiding y axis
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) + geom_dotplot(binwidth = 1.5) +
scale_y_continuous(NULL, breaks = NULL)
plotly::ggplotly(p)
Overlapping dots vertically
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot(binwidth = 1.5, stackratio = .7)
plotly::ggplotly(p)
Expanding dot diameter
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot(binwidth = 1.5, dotsize = 1.25)
plotly::ggplotly(p)
Changing fill colour and stroke witdth
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot(binwidth = 1.5, fill = "white", stroke = 2)
plotly::ggplotly(p)
Stacking along y axis
library(plotly)
p <-
ggplot(mtcars, aes(x = 1, y = mpg)) +
geom_dotplot(binaxis = "y", stackdir = "center")
plotly::ggplotly(p)
library(plotly)
p <-
ggplot(mtcars, aes(x = factor(cyl), y = mpg)) +
geom_dotplot(binaxis = "y", stackdir = "center")
plotly::ggplotly(p)
library(plotly)
p <-
ggplot(mtcars, aes(x = factor(cyl), y = mpg)) +
geom_dotplot(binaxis = "y", stackdir = "centerwhole")
plotly::ggplotly(p)
Changing colour with dodge position
library(plotly)
p <-
ggplot(mtcars, aes(x = factor(vs), fill = factor(cyl), y = mpg)) +
geom_dotplot(binaxis = "y", stackdir = "center", position = "dodge")
plotly::ggplotly(p)
Aligning bins between groups
library(plotly)
p <-
ggplot(mtcars, aes(x = factor(am), y = mpg)) +
geom_dotplot(binaxis = "y", stackdir = "center", binpositions="all")
plotly::ggplotly(p)
Stacking groups with different fill
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) +
geom_dotplot(stackgroups = TRUE, binwidth = 1, binpositions = "all")
plotly::ggplotly(p)
library(plotly)
p <-
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) +
geom_dotplot(stackgroups = TRUE, binwidth = 1, method = "histodot")
plotly::ggplotly(p)
Flip plot orientation
library(plotly)
p <-
ggplot(mtcars, aes(x = 1, y = mpg, fill = factor(cyl))) +
geom_dotplot(binaxis = "y", stackgroups = TRUE, binwidth = 1, method = "histodot")
plotly::ggplotly(p)
What About Dash?
Dash for R is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.
Learn about how to install Dash for R at https://dashr.plot.ly/installation.
Everywhere in this page that you see fig
, you can display the same figure in a Dash for R application by passing it to the figure
argument of the Graph
component from the built-in dashCoreComponents
package like this:
library(plotly)
fig <- plot_ly()
# fig <- fig %>% add_trace( ... )
# fig <- fig %>% layout( ... )
library(dash)
library(dashCoreComponents)
library(dashHtmlComponents)
app <- Dash$new()
app$layout(
htmlDiv(
list(
dccGraph(figure=fig)
)
)
)
app$run_server(debug=TRUE, dev_tools_hot_reload=FALSE)