{"id":15469,"date":"2020-03-22T21:44:59","date_gmt":"2020-03-22T20:44:59","guid":{"rendered":"https:\/\/www.datanovia.com\/en\/?p=15469"},"modified":"2020-03-22T21:44:59","modified_gmt":"2020-03-22T20:44:59","slug":"elegant-visualization-of-density-distribution-in-r-using-ridgeline","status":"publish","type":"post","link":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/","title":{"rendered":"Elegant Visualization of Density Distribution in R Using Ridgeline"},"content":{"rendered":"<div id=\"rdoc\">\n<p>This article how to <strong>visualize distribution in R<\/strong> using density ridgeline. The density ridgeline plot [ggridges package] is an alternative to the standard <code>geom_density()<\/code> [ggplot2 R package] function that can be useful for visualizing changes in distributions, of a continuous variable, over time or space. Ridgeline plots are partially overlapping line plots that create the impression of a mountain range.<\/p>\n<p>You will learn how to:<\/p>\n<ul>\n<li>Create basic density ridgeline plots<\/li>\n<li>Add gradient fill colors under the curves<\/li>\n<li>Add summary statistics such as quantile lines on the density plots<\/li>\n<li>Add original data points onto the density curves<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-density-logo-1.png\" width=\"672\" \/><\/p>\n<p>Contents:<\/p>\n<div id=\"TOC\">\n<ul>\n<li><a href=\"#prerequisites\">Prerequisites<\/a><\/li>\n<li><a href=\"#basic-density-ridgeline-plots\">Basic density ridgeline plots<\/a><\/li>\n<li><a href=\"#density-curves-with-gradient-fill-colors-along-the-x-axis\">Density curves with gradient fill colors along the x axis<\/a><\/li>\n<li><a href=\"#add-summary-statistic-lines\">Add summary statistic lines<\/a>\n<ul>\n<li><a href=\"#add-quantile-lines\">Add quantile lines<\/a><\/li>\n<li><a href=\"#color-the-density-area-by-quantiles\">Color the density area by quantiles<\/a><\/li>\n<li><a href=\"#color-the-density-curves-by-probabilities\">Color the density curves by probabilities<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#add-the-original-data-points-onto-the-density-curves\">Add the original data points onto the density curves<\/a><\/li>\n<li><a href=\"#create-histogram-distributions-using-ridgeline\">Create histogram distributions using ridgeline<\/a><\/li>\n<li><a href=\"#change-themes\">Change themes<\/a><\/li>\n<li><a href=\"#conclusion\">Conclusion<\/a><\/li>\n<\/ul>\n<\/div>\n<div id=\"prerequisites\" class=\"section level2\">\n<h2>Prerequisites<\/h2>\n<p>Load required R packages:<\/p>\n<pre class=\"r\"><code>library(ggplot2)\r\nlibrary(ggridges)\r\ntheme_set(theme_minimal())<\/code><\/pre>\n<p>Key R functions:<\/p>\n<ul>\n<li><code>geom_density_ridges()<\/code>: first estimates data densities and then draws those using ridgelines. It arranges multiple density plots in a staggered fashion.<\/li>\n<\/ul>\n<\/div>\n<div id=\"basic-density-ridgeline-plots\" class=\"section level2\">\n<h2>Basic density ridgeline plots<\/h2>\n<p>Key R functions:<\/p>\n<ul>\n<li><code>geom_density_ridges()<\/code>: Estimates data densities and then draws those using ridgelines. It arranges multiple density plots in a staggered fashion.<\/li>\n<\/ul>\n<pre class=\"r\"><code># Opened polygons\r\nggplot(iris, aes(x = Sepal.Length, y = Species, group = Species)) + \r\n  geom_density_ridges(fill = \"#00AFBB\")\r\n\r\n# Closed polygons\r\nggplot(iris, aes(x = Sepal.Length, y = Species, group = Species)) + \r\n  geom_density_ridges2(fill = \"#00AFBB\")\r\n\r\n# Cut off the trailin tails. \r\n# Specify `rel_min_height`: a percent cutoff\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) + \r\n  geom_density_ridges(fill = \"#00AFBB\", rel_min_height = 0.01)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-basic-density-ridgeline-plots-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-basic-density-ridgeline-plots-2.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-basic-density-ridgeline-plots-3.png\" width=\"336\" \/><\/p>\n<div class=\"notice\">\n<p>Note that, the grouping aesthetic does not need to be provided if a categorical variable is mapped onto the y axis, but it does need to be provided if the variable is numerical.<\/p>\n<\/div>\n<p><strong>Control the extent to which the different densities overlap<\/strong>. You can control the overlap between the different density plots using the <code>scale<\/code> option. Default value is 1. Smaller values create a separation between the curves, and larger values create more overlap.<\/p>\n<pre class=\"r\"><code># scale = 0.6, not touching\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) + \r\n  geom_density_ridges(scale = 0.6)\r\n\r\n# scale = 1, exactly touching\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) + \r\n  geom_density_ridges(scale = 1)\r\n\r\n# scale = 5, substantial overlap\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) + \r\n  geom_density_ridges(scale = 5, alpha = 0.7)\r\n\r\n# Change the density area fill colors by groups\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  geom_density_ridges(aes(fill = Species)) +\r\n  scale_fill_manual(values = c(\"#00AFBB\", \"#E7B800\", \"#FC4E07\")) +\r\n  theme(legend.position = \"none\")<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-control-density-ridglines-overlap-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-control-density-ridglines-overlap-2.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-control-density-ridglines-overlap-3.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-control-density-ridglines-overlap-4.png\" width=\"336\" \/><\/p>\n<\/div>\n<div id=\"density-curves-with-gradient-fill-colors-along-the-x-axis\" class=\"section level2\">\n<h2>Density curves with gradient fill colors along the x axis<\/h2>\n<p>This effect can be achieved with the function <code>geom_density_ridges_gradient()<\/code>, which works like <code>geom_density_ridges<\/code>, except that it allows for varying fill colors.<\/p>\n<div class=\"notice\">\n<p>Note that, for technical reasons, the <code>geom_density_ridges_gradient()<\/code> do not allow for alpha transparency in the fill.<\/p>\n<\/div>\n<p>Visualize the Lincoln weather data:<\/p>\n<ul>\n<li>Data set: <code>lincoln_weather<\/code> [in ggridges]. Weather in Lincoln, Nebraska in 2016.<\/li>\n<li>Create the density ridge plots of the <code>Mean Temperature<\/code> by <code>Month<\/code> and change the fill color according to the temperature value (on x axis).<\/li>\n<\/ul>\n<pre class=\"r\"><code>ggplot(\r\n  lincoln_weather, \r\n  aes(x = `Mean Temperature [F]`, y = `Month`, fill = stat(x))\r\n  ) +\r\n  geom_density_ridges_gradient(scale = 3, size = 0.3, rel_min_height = 0.01) +\r\n  scale_fill_viridis_c(name = \"Temp. [F]\", option = \"C\") +\r\n  labs(title = 'Temperatures in Lincoln NE') <\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-density-curves-with-gradient-fill-colors-1.png\" width=\"576\" \/><\/p>\n<\/div>\n<div id=\"add-summary-statistic-lines\" class=\"section level2\">\n<h2>Add summary statistic lines<\/h2>\n<div id=\"add-quantile-lines\" class=\"section level3\">\n<h3>Add quantile lines<\/h3>\n<p>Key R function: <code>stat_density_ridges()<\/code>. By default, three lines are drawn, corresponding to the first, second, and third quartile.<\/p>\n<pre class=\"r\"><code># Add quantiles Q1, Q2 (median) and Q3\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  stat_density_ridges(quantile_lines = TRUE)\r\n\r\n# Show only the median line (50%)\r\n# Use quantiles = 2 (for Q2) or quantiles = 50\/100\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  stat_density_ridges(quantile_lines = TRUE, quantiles = 0.5)\r\n\r\n# Indicate the 2.5% and 97.5% tails\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  stat_density_ridges(quantile_lines = TRUE, quantiles = c(0.025, 0.975), alpha = 0.7)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-add-quantile-lines-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-add-quantile-lines-2.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-add-quantile-lines-3.png\" width=\"336\" \/><\/p>\n<\/div>\n<div id=\"color-the-density-area-by-quantiles\" class=\"section level3\">\n<h3>Color the density area by quantiles<\/h3>\n<div class=\"block\">\n<p>You need to specify the option <code>calc_ecdf = TRUE<\/code> required for calculating quantiles. The ECDF represents the empirical cumulative density function for the distribution.<\/p>\n<\/div>\n<pre class=\"r\"><code># Color by quantiles\r\nggplot(iris, aes(x = Sepal.Length, y = Species, fill = factor(stat(quantile)))) +\r\n  stat_density_ridges(\r\n    geom = \"density_ridges_gradient\", calc_ecdf = TRUE,\r\n    quantiles = 4, quantile_lines = TRUE\r\n  ) +\r\n  scale_fill_viridis_d(name = \"Quartiles\")<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-color-the-density-area-by-quantiles-1.png\" width=\"576\" \/><\/p>\n<pre class=\"r\"><code># Highlight the tails of the distributions\r\nggplot(iris, aes(x = Sepal.Length, y = Species, fill = factor(stat(quantile)))) +\r\n  stat_density_ridges(\r\n    geom = \"density_ridges_gradient\",\r\n    calc_ecdf = TRUE,\r\n    quantiles = c(0.025, 0.975)\r\n  ) +\r\n  scale_fill_manual(\r\n    name = \"Probability\", values = c(\"#FF0000A0\", \"#A0A0A0A0\", \"#0000FFA0\"),\r\n    labels = c(\"(0, 0.025]\", \"(0.025, 0.975]\", \"(0.975, 1]\")\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-color-the-density-area-by-quantiles-2.png\" width=\"576\" \/><\/p>\n<\/div>\n<div id=\"color-the-density-curves-by-probabilities\" class=\"section level3\">\n<h3>Color the density curves by probabilities<\/h3>\n<p>When <code>calc_ecdf = TRUE<\/code>, we also have access to a calculated aesthetic <code>stat(ecdf)<\/code>, which represents the empirical cumulative density function for the distribution. This allows us to map the probabilities directly onto color.<\/p>\n<pre class=\"r\"><code>ggplot(iris, aes(x = Sepal.Length, y = Species, fill = 0.5 - abs(0.5 - stat(ecdf)))) +\r\n  stat_density_ridges(geom = \"density_ridges_gradient\", calc_ecdf = TRUE) +\r\n  scale_fill_viridis_c(name = \"Tail probability\", direction = -1)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-color-the-density-curves-by-probabilities-1.png\" width=\"576\" \/><\/p>\n<\/div>\n<\/div>\n<div id=\"add-the-original-data-points-onto-the-density-curves\" class=\"section level2\">\n<h2>Add the original data points onto the density curves<\/h2>\n<p>This can be done by setting <code>jittered_points = TRUE<\/code>, either in <code>stat_density_ridges<\/code> or in <code>geom_density_ridges<\/code>.<\/p>\n<p>The position of data points can be controlled using the following options:<\/p>\n<ul>\n<li><code>position = \"sina\"<\/code>: Randomly distributes points in a ridgeline plot between baseline and ridgeline. This is the default option.<\/li>\n<li><code>position = \"jitter\"<\/code>: Randomly jitter the points in a ridgeline plot. Points are randomly shifted up and down and\/or left and right.<\/li>\n<li><code>position = \"raincloud\"<\/code>: Creates a cloud of randomly jittered points below a ridgeline plot.<\/li>\n<\/ul>\n<pre class=\"r\"><code># Add jittered points\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  geom_density_ridges(jittered_points = TRUE)\r\n\r\n# Control the position of points\r\n# position = \"raincloud\"\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  geom_density_ridges(\r\n    jittered_points = TRUE, position = \"raincloud\",\r\n    alpha = 0.7, scale = 0.9\r\n  )\r\n\r\n# position = \"points_jitter\"\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  geom_density_ridges(\r\n    jittered_points = TRUE, position = \"points_jitter\",\r\n    alpha = 0.7, scale = 0.9\r\n  )\r\n\r\n# Add marginal rug\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  geom_density_ridges(\r\n    jittered_points = TRUE,\r\n    position = position_points_jitter(width = 0.05, height = 0),\r\n    point_shape = '|', point_size = 3, point_alpha = 1, alpha = 0.7,\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-add-data-points-1.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-add-data-points-2.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-add-data-points-3.png\" width=\"336\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-add-data-points-4.png\" width=\"336\" \/><\/p>\n<p><strong>Styling the jittered points and add quantile lines<\/strong>.<\/p>\n<pre class=\"r\"><code># Styling jittered points\r\nggplot(iris, aes(x = Sepal.Length, y = Species, fill = Species)) +\r\n  geom_density_ridges(\r\n    aes(point_color = Species, point_fill = Species, point_shape = Species),\r\n    alpha = .2, point_alpha = 1, jittered_points = TRUE\r\n  ) +\r\n  scale_point_color_hue(l = 40) +\r\n  scale_discrete_manual(aesthetics = \"point_shape\", values = c(21, 22, 23))<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-styling-the-jitterd-points-1.png\" width=\"576\" \/><\/p>\n<pre class=\"r\"><code># Styling vertical quantile lines\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) +\r\n  geom_density_ridges(\r\n    jittered_points = TRUE, quantile_lines = TRUE, scale = 0.9, alpha = 0.7,\r\n    vline_size = 1, vline_color = \"red\",\r\n    point_size = 0.4, point_alpha = 1,\r\n    position = position_raincloud(adjust_vlines = TRUE)\r\n  )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-styling-the-jitterd-points-2.png\" width=\"576\" \/><\/p>\n<\/div>\n<div id=\"create-histogram-distributions-using-ridgeline\" class=\"section level2\">\n<h2>Create histogram distributions using ridgeline<\/h2>\n<p>Use the following options:<\/p>\n<ul>\n<li><code>stat = \"binline\"<\/code>: Creates histogram plots<\/li>\n<li><code>draw_baseline = FALSE<\/code>: Removes trailing lines to either side of the histogram. For histograms, the <code>rel_min_height<\/code> parameter doesn\u2019t work very well.<\/li>\n<\/ul>\n<pre class=\"r\"><code>ggplot(iris, aes(x = Sepal.Length, y = Species, height = stat(density))) + \r\n  geom_density_ridges(\r\n    stat = \"binline\", bins = 20, scale = 0.95,\r\n    draw_baseline = FALSE\r\n    )<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-create-histogram-distributions-1.png\" width=\"480\" \/><\/p>\n<\/div>\n<div id=\"change-themes\" class=\"section level2\">\n<h2>Change themes<\/h2>\n<pre class=\"r\"><code># Use theme_ridges()\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) + \r\n  geom_density_ridges() + \r\n  theme_ridges()\r\n# Remove grids\r\nggplot(iris, aes(x = Sepal.Length, y = Species)) + \r\n  geom_density_ridges() + \r\n  theme_ridges(grid = FALSE, center_axis_labels = TRUE)<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-change-themes-1.png\" width=\"355.2\" \/><img decoding=\"async\" src=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/dn-tutorials\/r-tutorial\/figures\/ggridges-visualize-distribution-in-r-change-themes-2.png\" width=\"355.2\" \/><\/p>\n<\/div>\n<div id=\"conclusion\" class=\"section level2\">\n<h2>Conclusion<\/h2>\n<p>This article how to <strong>visualize distribution in R<\/strong> using density ridgeline.<\/p>\n<\/div>\n<\/div>\n<p><!--end rdoc--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article how to visualize distribution in R using density ridgeline. The density ridgeline plot [ggridges package] is an alternative to the standard geom_density() [ggplot2 R package] function that can [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":15470,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rating_form_position":"","rating_results_position":"","mr_structured_data_type":"","footnotes":""},"categories":[134],"tags":[137],"class_list":["post-15469","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-visualization","tag-ggplot2-extensions"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Elegant Visualization of Density Distribution in R Using Ridgeline - Datanovia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Elegant Visualization of Density Distribution in R Using Ridgeline - Datanovia\" \/>\n<meta property=\"og:description\" content=\"This article how to visualize distribution in R using density ridgeline. The density ridgeline plot [ggridges package] is an alternative to the standard geom_density() [ggplot2 R package] function that can [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/\" \/>\n<meta property=\"og:site_name\" content=\"Datanovia\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-22T20:44:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1344\" \/>\n\t<meta property=\"og:image:height\" content=\"960\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alboukadel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alboukadel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/\"},\"author\":{\"name\":\"Alboukadel\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e\"},\"headline\":\"Elegant Visualization of Density Distribution in R Using Ridgeline\",\"datePublished\":\"2020-03-22T20:44:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/\"},\"wordCount\":575,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png\",\"keywords\":[\"ggplot2 extensions\"],\"articleSection\":[\"Data Visualization\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/\",\"url\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/\",\"name\":\"Elegant Visualization of Density Distribution in R Using Ridgeline - Datanovia\",\"isPartOf\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png\",\"datePublished\":\"2020-03-22T20:44:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#primaryimage\",\"url\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png\",\"contentUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png\",\"width\":1344,\"height\":960,\"caption\":\"ggridges-visualize-distribution-in-r-density-logo-1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.datanovia.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Elegant Visualization of Density Distribution in R Using Ridgeline\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#website\",\"url\":\"https:\/\/www.datanovia.com\/en\/\",\"name\":\"Datanovia\",\"description\":\"Data Mining and Statistics for Decision Support\",\"publisher\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.datanovia.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#organization\",\"name\":\"Datanovia\",\"url\":\"https:\/\/www.datanovia.com\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png\",\"contentUrl\":\"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png\",\"width\":98,\"height\":99,\"caption\":\"Datanovia\"},\"image\":{\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e\",\"name\":\"Alboukadel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g\",\"caption\":\"Alboukadel\"},\"url\":\"https:\/\/www.datanovia.com\/en\/blog\/author\/kassambara\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Elegant Visualization of Density Distribution in R Using Ridgeline - Datanovia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/","og_locale":"en_US","og_type":"article","og_title":"Elegant Visualization of Density Distribution in R Using Ridgeline - Datanovia","og_description":"This article how to visualize distribution in R using density ridgeline. The density ridgeline plot [ggridges package] is an alternative to the standard geom_density() [ggplot2 R package] function that can [&hellip;]","og_url":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/","og_site_name":"Datanovia","article_published_time":"2020-03-22T20:44:59+00:00","og_image":[{"width":1344,"height":960,"url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png","type":"image\/png"}],"author":"Alboukadel","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Alboukadel","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#article","isPartOf":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/"},"author":{"name":"Alboukadel","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e"},"headline":"Elegant Visualization of Density Distribution in R Using Ridgeline","datePublished":"2020-03-22T20:44:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/"},"wordCount":575,"commentCount":1,"publisher":{"@id":"https:\/\/www.datanovia.com\/en\/#organization"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#primaryimage"},"thumbnailUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png","keywords":["ggplot2 extensions"],"articleSection":["Data Visualization"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/","url":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/","name":"Elegant Visualization of Density Distribution in R Using Ridgeline - Datanovia","isPartOf":{"@id":"https:\/\/www.datanovia.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#primaryimage"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#primaryimage"},"thumbnailUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png","datePublished":"2020-03-22T20:44:59+00:00","breadcrumb":{"@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#primaryimage","url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png","contentUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2020\/03\/ggridges-visualize-distribution-in-r-density-logo-1.png","width":1344,"height":960,"caption":"ggridges-visualize-distribution-in-r-density-logo-1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.datanovia.com\/en\/blog\/elegant-visualization-of-density-distribution-in-r-using-ridgeline\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.datanovia.com\/en\/"},{"@type":"ListItem","position":2,"name":"Elegant Visualization of Density Distribution in R Using Ridgeline"}]},{"@type":"WebSite","@id":"https:\/\/www.datanovia.com\/en\/#website","url":"https:\/\/www.datanovia.com\/en\/","name":"Datanovia","description":"Data Mining and Statistics for Decision Support","publisher":{"@id":"https:\/\/www.datanovia.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.datanovia.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.datanovia.com\/en\/#organization","name":"Datanovia","url":"https:\/\/www.datanovia.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png","contentUrl":"https:\/\/www.datanovia.com\/en\/wp-content\/uploads\/2018\/09\/datanovia-logo.png","width":98,"height":99,"caption":"Datanovia"},"image":{"@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/7767cf2bd5c91a1610c6eb53a0ff069e","name":"Alboukadel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.datanovia.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed3108646c5c7c3d188324ab972f96ad7d9975b41b94014d7f68257791be395a?s=96&d=mm&r=g","caption":"Alboukadel"},"url":"https:\/\/www.datanovia.com\/en\/blog\/author\/kassambara\/"}]}},"multi-rating":{"mr_rating_results":[]},"_links":{"self":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/15469","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/comments?post=15469"}],"version-history":[{"count":1,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/15469\/revisions"}],"predecessor-version":[{"id":15472,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/posts\/15469\/revisions\/15472"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/media\/15470"}],"wp:attachment":[{"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/media?parent=15469"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/categories?post=15469"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.datanovia.com\/en\/wp-json\/wp\/v2\/tags?post=15469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}