How to Make a Donut Chart in R
Donut charts are the slightly slimmer cousin of pie charts used to display groups that make up proportions of a whole. As with pie charts, the information in donut chart can usually be more accurately displayed with a bar chart, so realize that using them might attract the ire of the data visualization police in the same way that pie charts do.
Code used in this code clip:
#Rprogramming #Datavizualization #ggplot2
Code used in this clip:
library(tidyverse)
library(plotly)
library(IRdisplay)
colors <- c("#FFFFFF","#F5FCC2","#E0ED87","#CCDE57",
"#B3C732","#94A813","#718200")
data <- diamonds %>%
group_by(color) %>%
summarize(counts = n(),
percentage = n()/nrow(diamonds))
data
# Donut chart with ggplot2
donut <- ggplot(data = data, aes(x=2, y = percentage, fill = color))+
geom_col(color = "black") +
coord_polar("y", start = 0) +
geom_text(aes(label = paste0(round(percentage*100), "%")),
position = position_stack(vjust = 0.5)) +
theme(panel.background = element_blank(),
axis.line = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank(),
plot.title = element_text(hjust = 0.5, size = 18)) +
ggtitle("Donut Chart of Diamond Color (ggplot2)") +
scale_fill_manual(values = colors) +
xlim(0.5, 2.5)
donut
# Donut chart with plotly
donut <- plot_ly(data = data, labels = ~color, values = ~percentage,
type = 'pie', sort= FALSE,
marker= list(colors=colors, line = list(color="black", width=1))) %>%
layout(title="Donut Chart of Diamond Color (with Plotly)")
# Display chart in notebook window
htmlwidgets::saveWidget(donut, "donut.html")
display_html('<iframe src="donut.html" width=500 height=500 frameborder="0"></iframe>')
# Code for creating the plot outside a notebook environment with a plotly account:
# Sys.setenv("plotly_username"="yourusername")
# Sys.setenv("plotly_api_key"="yourapikey")
# chart_link <- api_create(donut, filename="donut_test")
# chart_link
Code Clips are basic code explanations in 3 minutes or less. They are intended to be short reference guides that provide quick breakdowns and copy/paste access to code needed to accomplish common data science tasks. Think Stack Overflow with a video explanation.
* Note: YouTube does not allow greater than or less than symbols in the text description, so the code above may not be exactly the same as the code shown in the video! For R that means I may use = for assignment and the special Unicode large < and > symbols in place of the standard sized ones for dplyr pipes and comparisons. These special symbols should work as expected for R code on Windows, but may need to be replaced with standard greater than and less than symbols for other operating systems.
Other Videos By DataDaft
2019-12-10 | Python Programming Practice: LeetCode #9 -- Palindrome Number |
2019-12-09 | stringr: String Matching |
2019-12-06 | stringr: String Interpolation |
2019-12-06 | stringr: Sorting Strings |
2019-12-06 | stringr: Split and Join Strings |
2019-12-05 | stringr: Basic String Manipulation |
2019-12-03 | How to Reverse Data in R |
2019-11-26 | Python Programming Practice: LeetCode #1 -- Two Sum |
2019-11-25 | Introduction to R: Probability Distributions |
2019-11-20 | How to Make Word Clouds in R |
2019-11-19 | How to Make a Donut Chart in R |
2019-11-15 | Dragon Ball Power Levels Over Time (1 Second = 1 Episode) |
2019-11-14 | How to Plot Functions in R |
2019-11-13 | How to Make a Bubble Plot in R |
2019-11-12 | How to Combine and Split Strings in R |
2019-11-06 | How to Make a Line Plot in R |
2019-11-04 | How to Make a Scatter Plot Matrix in R |
2019-11-01 | How to Make Violin Plots in R |
2019-10-31 | How to Make Pie Charts in R |
2019-10-29 | How to Make Boxplots in R |
2019-10-15 | How to Make Stacked and Grouped Bar Plots in R |