From 8f4b1f33091e462a821d1d1762faf312fd8d066a Mon Sep 17 00:00:00 2001 From: krassowski Date: Sat, 3 Apr 2021 23:04:07 +0100 Subject: [PATCH] Enable further customization of stripes --- NAMESPACE | 1 + NEWS.md | 2 + R/upset.R | 85 +++- man/upset.Rd | 4 +- man/upset_stripes.Rd | 25 + tests/figs/examples/example-5-1-stripes-4.svg | 422 +++++++++++++++++ tests/figs/examples/example-5-1-stripes-5.svg | 431 ++++++++++++++++++ vignettes/Examples.ipynb | 144 ++++-- 8 files changed, 1068 insertions(+), 46 deletions(-) create mode 100644 man/upset_stripes.Rd create mode 100644 tests/figs/examples/example-5-1-stripes-4.svg create mode 100644 tests/figs/examples/example-5-1-stripes-5.svg diff --git a/NAMESPACE b/NAMESPACE index 32cc360..b9038ad 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -23,6 +23,7 @@ export(upset_mode) export(upset_modify_themes) export(upset_query) export(upset_set_size) +export(upset_stripes) export(upset_test) export(upset_text_percentage) export(upset_themes) diff --git a/NEWS.md b/NEWS.md index e907621..07e50d0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,8 @@ Bux fixes: Major improvements: - manually specified intersections will now display empty intersections and non-exclusive intersections correctly #109 - manually specified intersections do not require modifying the `intersect` argument to obtain the intended result any longer #109 +- stripes size and other attributes of underlying `geom_segment()` can now be customized with new function: `upset_stripes()` #111 +- stripes color and other attributes can now be mapped to data #111 Minor improvements: - data.table can be passed instead of data.frame (the conversion will be performed atuomatically) #105 diff --git a/R/upset.R b/R/upset.R index dcdea8f..641e319 100644 --- a/R/upset.R +++ b/R/upset.R @@ -147,7 +147,6 @@ segment_end = function(matrix_frame, data, intersection, end) { }, MARGIN=1) } -upset_stripes = c('white', 'grey95') matrix_background_stripes = function(data, stripes, orient='horizontal') { @@ -160,17 +159,55 @@ matrix_background_stripes = function(data, stripes, orient='horizontal') { aes = aes(y=-Inf, yend=Inf, x=group, xend=group) } groups = data$sorted$groups[data$sorted$groups %in% data$plot_sets_subset] + data = data.frame( + group=groups, + group_name=data$non_sanitized_labels[groups] + ) + + if (!is.null(stripes$data)) { + data = merge( + data, + stripes$data, + by.x='group_name', + by.y='set', + all.x=TRUE + ) + } + + params = list( + data=data, + mapping=modifyList(aes, stripes$mapping) + ) + + if (!is.null(stripes$colors) && is.null(names(stripes$colors))) { + params$color = rep_len(stripes$colors, length(groups)) + } + list( - geom_segment( - data=data.frame(group=groups), - aes, - color=rep_len(stripes, length(groups)), - size=7 - ) + do.call(geom_segment, params) * stripes$geom ) } +#' Define appearence of the stripes +#' +#' @param mapping additional aesthetics +#' @param geom a geom to use, should accept x, y, xend, yend and color aesthetics +#' @param colors a vector of colors to repeat as many times as needed for the fill of stripes, or a named vector specifying colors for values of the variable mapped to the color aesthetics in the mapping argument +#' @param data the dataset describing the sets with a column named set and any other columns as needed for mapping +#' @export +upset_stripes = function(mapping=aes(), geom=geom_segment(size=7), colors=c('white', 'grey95'), data=NULL) { + stripes = list( + mapping=mapping, + geom=geom, + colors=colors, + data=data + ) + class(stripes) = 'upset_stripes' + stripes +} + + intersection_size_text = list(vjust=-0.25) #' Retrieve symbol for given mode that can be used in aesthetics mapping with double bang (!!) @@ -878,7 +915,7 @@ solve_mode = function (mode) { #' @param labeller function modifying the names of the sets (rows in the matrix) #' @param height_ratio ratio of the intersection matrix to intersection size height #' @param width_ratio ratio of the overall set size width to intersection matrix width -#' @param stripes a characters vector, specifying the background colors for rows (e.g. odd and even if two elements) +#' @param stripes specification of the stripes appearance created with `upset_stripes()` #' @param matrix the intersection matrix plot #' @param set_sizes the overall set sizes plot, e.g. from `upset_set_size()` (`FALSE` to hide) #' @param guides action for legends aggregation and placement ('keep', 'collect', 'over' the set sizes) @@ -894,7 +931,7 @@ upset = function( name='group', annotations=list(), themes=upset_themes, - stripes=upset_stripes, + stripes=upset_stripes(), labeller=identity, height_ratio=0.5, width_ratio=0.3, @@ -923,6 +960,11 @@ upset = function( } } + # for backwards compatibility pre 1.2 + if (class(stripes) != 'upset_stripes') { + stripes = upset_stripes(colors=stripes) + } + annotations = c(annotations, base_annotations) data = upset_data(data, intersect, mode=mode, encode_sets=encode_sets, ...) @@ -1029,6 +1071,18 @@ upset = function( y_scale = NULL } + matrix_default_colors = list('TRUE'='black', 'FALSE'='grey85') + matrix_guide = FALSE + matrix_breaks = names(matrix_default_colors) + if (!is.null(names(stripes$colors))) { + matrix_default_colors = c( + matrix_default_colors, + stripes$colors + ) + matrix_guide = guide_legend() + matrix_breaks = names(stripes$colors) + } + intersections_matrix = ( intersections_matrix + xlab(name) @@ -1038,8 +1092,9 @@ upset = function( intersections_matrix, 'colour', scale_color_manual( - values=list('TRUE'='black', 'FALSE'='grey85'), - guide=FALSE + values=matrix_default_colors, + guide=matrix_guide, + breaks=matrix_breaks ) ) + themes$intersections_matrix @@ -1200,6 +1255,14 @@ upset = function( + coord_flip() + scale_x_discrete(limits=sets_limits) + scale_if_missing(set_sizes, axis='y', scale=default_scale) + + scale_if_missing( + set_sizes, + 'colour', + scale_color_manual( + values=matrix_default_colors, + guide=FALSE + ) + ) ) if (is_set_size_on_the_right) { diff --git a/man/upset.Rd b/man/upset.Rd index e4a88d1..5b83bac 100644 --- a/man/upset.Rd +++ b/man/upset.Rd @@ -11,7 +11,7 @@ upset( name = "group", annotations = list(), themes = upset_themes, - stripes = upset_stripes, + stripes = upset_stripes(), labeller = identity, height_ratio = 0.5, width_ratio = 0.3, @@ -42,7 +42,7 @@ upset( \item{themes}{a named list of themes for components and annotations, see \code{upset_default_themes()}/\code{upset_modify_themes()}} -\item{stripes}{a characters vector, specifying the background colors for rows (e.g. odd and even if two elements)} +\item{stripes}{specification of the stripes appearance created with \code{upset_stripes()}} \item{labeller}{function modifying the names of the sets (rows in the matrix)} diff --git a/man/upset_stripes.Rd b/man/upset_stripes.Rd new file mode 100644 index 0000000..ccb5edd --- /dev/null +++ b/man/upset_stripes.Rd @@ -0,0 +1,25 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/upset.R +\name{upset_stripes} +\alias{upset_stripes} +\title{Define appearence of the stripes} +\usage{ +upset_stripes( + mapping = aes(), + geom = geom_segment(size = 7), + colors = c("white", "grey95"), + data = NULL +) +} +\arguments{ +\item{mapping}{additional aesthetics} + +\item{geom}{a geom to use, should accept x, y, xend, yend and color aesthetics} + +\item{colors}{a vector of colors to repeat as many times as needed for the fill of stripes, or a named vector specifying colors for values of the variable mapped to the color aesthetics in the mapping argument} + +\item{data}{the dataset describing the sets with a column named set and any other columns as needed for mapping} +} +\description{ +Define appearence of the stripes +} diff --git a/tests/figs/examples/example-5-1-stripes-4.svg b/tests/figs/examples/example-5-1-stripes-4.svg new file mode 100644 index 0000000..81dbd31 --- /dev/null +++ b/tests/figs/examples/example-5-1-stripes-4.svg @@ -0,0 +1,422 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +106 +263 +89 +177 +429 +154 +104 +205 +79 +113 +19 +13 + + + + + +0 +100 +200 +300 +400 +Intersection size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +250 +500 +750 +Set size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Documentary +Animation +Romance +Action +Comedy +Drama +group +Example: 5.1 Stripes: 4 + diff --git a/tests/figs/examples/example-5-1-stripes-5.svg b/tests/figs/examples/example-5-1-stripes-5.svg new file mode 100644 index 0000000..7b7b696 --- /dev/null +++ b/tests/figs/examples/example-5-1-stripes-5.svg @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +106 +263 +89 +177 +429 +154 +104 +205 +79 +113 +19 +13 + + + + + +0 +100 +200 +300 +400 +Intersection size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +250 +500 +750 +Set size + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Documentary +Animation +Romance +Action +Comedy +Drama +group + + + + + + +yes +no +on weekends +Example: 5.1 Stripes: 5 + diff --git a/vignettes/Examples.ipynb b/vignettes/Examples.ipynb index 6d523cf..835b2f1 100644 --- a/vignettes/Examples.ipynb +++ b/vignettes/Examples.ipynb @@ -1928,6 +1928,84 @@ ")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Advanced customization using `upset_stripes()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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abFYtm3btnr1arVLhBBC4QgDoWoYhqlsbMkwjMlkUrc8CCEUnjAQqmbatGlDhw49f/78smXL+vTp8/jjj6tdIoQQCkcYCFWTk5OzePHi8ePHcxy3Zs2aRx99VO0SXcfeeOON9PT05OTkhx56SL7OzsvL6927d8eOHWfMmCF/Jicnp3Xr1qmpqSo+i0UINUPYWEY16enpCxYseOGFF+TFrKysAwcOqFuk61ReXt7y5cv379+v0+lGjRq1atWqBx98cOzYsV988UWLFi3uuuuuPXv2uN3uvLy806dPe73eLl26DB8+vFu3bmoXHCHULOAVoWpYln3rrbdmzpzJ87zaZbm+FRQUPPzww7GxsZGRkSNHjjx37tzmzZv79u3bsWNHs9m8c+fOrKwsu90+d+5cg8EQHR2dnp7u8/nULjVCqLnAQKiayMjIb7/9VpKkwYMHFxUVqV2c69jo0aOfffZZACgqKlq9enV2dvaFCxdcLlf37t3bt2//8MMPS5LUq1evwYMHr1u3bsiQIQkJCb169VK71Aih5gIDoZq0Wu2yZcv+8pe//OEPfygoKFC7ONe39957r1evXvPmzevfvz9N04cPH/7ss89++umngoKCN998U/5Mnz59HnjggWPHjuFdaIRQJXxGqJqnn35afjF27NjMzMyFCxeqW57rlyiKEyZM4Dhu37598fHxANCiRYvBgwe3bNmSYZjs7OwjR4589dVXiYmJt99++9ixY0+cOLF58+YePXqoXXCEULOAgVAFEydOfPnll7/55ptvvvmmMpHceLg3vA0bNjgcjq1bt1amDB8+fNGiRRcvXjSbzevXr580adLVq1ffeOON9evX8zz/3XffPfbYYyoWGCHUrGAgVMGECRMiIiImT55cmdIEAyvfwHbv3v3jjz9Wzj8wderUl19+edGiRX/6059Ylr3vvvsmT54sSdKRI0cyMzMFQRg3btz48ePVLTNCqPmgJElSuwxhavv27Vu2bHnppZeGDx++e/fud955p/rEDtcjQjFm7dq1Df0KwzAMwxCdJaqsrCwyMpLoNEyiKJKb3UaSJIfDUedsbaHweDxarZboNEwVFRUxMTGE8gcAl8tlNBqJTsNE03RUVBSh/AHA6XTabDai0zBxHEd0yjOHwxEdHd24aZjqhI1lVDN37txhw4Z9//33FovlxIkTb731ltolQgihcIS3RlXjcDj69+8/c+bM7Ozs5OTks2fPql2i60bzuehECN0A8IpQNVlZWffff/+6deuGDRs2b968li1bql0ihBAKRxgIVfPaa6/16NHjm2++kZ/QfPzxx2qXCCGEwhHeGlVNZGTkI488Ir/GYaARQkgteEWIEEIorGEgRAghFNbw1qhqRFHcvn27w+GoTLnvvvtULE+j+f1+QRBIr8Xr9TbDVUiS5PP5yHXC4zhOkiRydZe7EXu9XnJV4HleEARRFAnlL0kS0Z8IAARBYBiG3Cwx8u9DtAqiKPr9fpZlCeXP8zzpKgAATdON21CtVmvtH8BAqJpx48YVFRV17dq1MuU6DYQmk6kJ1lLnpqzKKhiGMZvNpDvUk6u7JEl+v99qtV7XHepZliW6eQiC0AQd6olWgWVZk8lEukM90Sr4/X6LxUKoQz0GQtUcOnTo9OnThP5XhBBC9YRHYdUkJydfunRJ7VIghFC4wytC1URGRrZr165nz55xcXFyyoYNG9QtEkIIhSEMhKqZNWvWrFmz1C4FQgiFO7w1qprevXu73e5NmzZ98cUXLperd+/eapcIIYTCEQZC1cyfP/+ZZ54xGo02m+3ZZ5994YUX1C4RQgiFI7w1qpoPPvjg6NGjFosFAGbOnNm1a9fc3Fy1C4UQQmEHrwjVVNl5C6enRwghteAVoWomTJjQq1eve+65R5Kkf//73+PGjVO7RAghFI4wEKpm3rx53bt3/+GHHwBg4cKFw4YNU7tECCEUjvDWqAomTpxYWFg4ceLEtWvXFhYWFhYWfvzxxxMnTlS7XKg2b7zxRnp6enJy8kMPPcRxHAB89tlnd9xxR3p6+urVq+XPtGvXzvw/u3btUrW8CKH6witCFUyYMCEiImLy5MlqFwTVV15e3vLly/fv36/T6UaNGrVq1apx48bl5OR88803cXFxPXr0GDRoUEpKis/n8/l8ahcWIdQwGAhVMHToUAD4/PPPV65cWZk4efLkgQMHqlcoVJuCgoKHH344NjYWAEaOHHnu3Lmvvvpq4MCBiYmJkZGR2dnZGzduzM7OTkpKUrukCKEGw0CogoULF3700UeXLl3avn27nCIIQmRkpLqlQrUYPXq0/KKoqGj16tWvv/76nj170tLS5MS0tLSCgoLz58+XlpYOHDjwl19+ufvuu1esWKHT4f6F0HUAnxGq4Mknn9y9e/eIESN2/8/evXv37dundrlQHd57771evXrNmzevf//+oihW7fTC83xMTExOTs62bduOHTt27NixVatWqVhUhFD94RmrCqxWq9VqXbdund/vNxgMDMPQNE1uTjsUOlEUJ0yYwHHcvn374uPjASA5OXnv3r3yuwUFBSkpKZ07d87MzKQoKj4+/t577z169KiqRUYI1RdeEarmo48+uummm2iaLioq6tix4/vvv692iVCNNmzY4HA41q9fL0dBABg+fPjWrVvLy8u9Xu+XX36ZnZ29YsWK0aNHsyzrdDo///xzHDwWoesFXhGqZt68eQcPHrTZbDab7fjx4z179rz//vvVLhQKbvfu3T/++GN0dLS8OHXq1Jdffnnx4sWjRo2iKOqZZ55p06bNtGnTrly5kpGRwXHcpEmTJk2apG6ZEUL1hIFQNZIkJSQkyK/j4uIMBoO65UG1WL58+fLlywMSx48f/6c//SkyMlK+ra3X65ctW7Zs2TI1CogQajwMhKq57777BgwYMGbMGIPBsH79+uzsbBULQ9P0ihUrWJaNjIx85JFHdDrd8uXLvV5vWlralClTBEGouqhiORFCSHEYCFXz4osvfv75599++y3P8w8//PDYsWNVLMy333578803Dx8+/OOPP961a5fZbG7duvWYMWOWLFly5cqVixcvVl1MTU1VsahNYPz48SSyXbt2LYlsEUIhwkCoJqfTyfP8q6++evLkSXUnoEhPT5fv09psNr1en5+f3717dwDIzMzMz8+/ePFi1cWAQMgwjCiKpEvYBCO2kF5FI/LnOE6SJHIFkyQJAHw+H7nNj+d5opuHKIpEfyIAEASBZVlytRAEQRRFolWQJIlhGJ7nCeXP87wgCKT3IL/f37gN1Ww21/4BDISqyc3N3b9//4ULFyiKeuqppwYMGDB//ny1CtOxY0cAOHjw4N69e59//vnjx4/LEyWazWaPx+PxeKouBnxXFEVBEEiX8AZYRSPylyRJkiRyBZMDoSAI5AJhk1WBUP4yohu5nDPRKkiS1ASnI6SrQG5DxUComk8//fTgwYN33XWXxWLZtm1bhw4dVAyEAPDOO+94PJ45c+aYzWar1UrTNAD4fD6512PVxYAv1nm2pQibzXa9r6LO/L1e75/+9Cd5tO4XX3xx4cKFcrogCAMGDPjDH/4QkLJ169YQiyRfKNhsNnKB0OPxaLVachuJIAgcxxH971wul9FoNBqNhPJnWZamaaJV4DjObDbr9XpC+fv9ftL/AsMwVqtVoyHS5Q/7EaqGYRh5EgP5tclkUrEw//nPf7Ra7YwZM+Qrv/bt2588eRIATp482b59+4BFFct5A1u1atWAAQPKy8vlxdmzZ/t8PofDUVJScv/998+YMUNOkckp6hYYoRsGBkLVTJs2bejQoefPn1+2bFmfPn0ef/xxFQtz7Nixo0ePzp49e/bs2bt37+7Ro8elS5eWLFkSFxeXmpoasKhiOW9gbdu2feCBB6qn79q1i+O4O++8szJlx44dASkIoVDgrVHV5OTkdO3aVT6orV69ulu3bioW5q9//WtAyvTp0ytfa7XaqouIhMGDB7dp06bqhCQAIElSbm7u559/XjVl1qxZ69evb/ICInTDwitC1Wzfvn3Lli3z58//8ccf//jHP3766adqlwg1O5s2bcrIyGjZsmVlysaNGzt37lw1BSEUIgyEqpk7d+6wYcO+//57i8Vy4sSJt956S+0SoWZn3bp1I0eOrJry0UcfjRo1Sq3yIHRDwkCoGofD0b9//y1btmRnZycnJ589e1btEqHmhabpH3/8sV+/flVTduzYgRM4I6QsDISqycrKuv/++9etWzds2LB58+bhzS4UYMuWLVlZWXI73sqU7t27V01BCIUOA6FqXnvttR49enzzzTexsbEURX388cdqlwiprG3btseOHatcHD16dNVmMnLKV1991eTlQugGh61G1cFx3DvvvJOTkyMvqtuVHiGEwhkGQnXo9fo9e/bcfffdrVu3VrssqKkRGtQbFBrXW5IkjuNwXjAUPjAQqsZut99+++1ZWVl2u11Owc5hiKiqQ7gBQLt27QoKCiRJoihq27Ztffv2ldOfe+45j8fz+uuvq1dShJoUBkLVTJkyBef2Q01m1apV7733XuX8APJ0BzRNOxwO+Sm1nL5z585Vq1ZNmDBBvZIi1NSwsYxq+vXrl5+f/+GHH3br1s1qtVZtJY+Q4gKGcLty5UpSUlLAZ8rLy59++ulnn322aYuGkMowEKomNzd3/fr1u3btkqdhmjt3rtolQjeywYMHDx48uHLx/PnzpaWlgwYN6tSp07Rp0+SZ6h599NHc3Nz4+Hj1iomQCjAQqubTTz/97LPPWrZsKU/DtHr1arVLhMJITExMTk7O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eg89ZURYUFDw5JNPnjhxAgDcbnd9ff2wYcOmTZu2efNmt9vt8/luvPHG4B4ZnufDT3z88cdffPHFW2+9df369fv37w86uRMnTjz22GNbt24lSRIAJO1gMJhLydSpUz/44AOe5xsbGz///POITydPnvzee+/5fD6GYd57770pU6aYTKaTJ08KgmC324NvtADw8ccf22w2juPefPPNyZMnX+o6YK5SesqIcNSoUX/5y19+9rOftba2iqI4Z86cdevWaTSapUuXjh492u/333HHHaNHj+Z53mAwLFmyZPPmzcET77zzzoULF27evHngwIGvvvpq8KXyySefpChq9uzZwWMOHToUYeey1ROD6a3MmTPnwIEDQ4cOHT58+KRJk4xGo9/vD3160003ffrpp0HVmltvvXXmzJkAUFZWVlpayvP8uHHjgodNmDDhRz/6kcVimTJlyt13331ZKoK5+ugp4RMYDObq5tNPPz18+PA999zj8/lGjhy5f//+7OzspCy8/PLLzc3Na9asSdMdYnotPWVEiMFgrm7Ky8tfffXVyZMnBwKBRx99NFkviMGkDzwixGAwVwYul4vjOLPZfLlvBHO1gR0hBoPBYHo1PWXXKAaDwWAwlwXsCDEYDAbTq8GOEIPBYDC9GuwIMRgMBtOrwY4Qg8FgML0a7AgxGAwG06vBjhCDwWAwvRrsCDEYDAbTq8GOEIPBYDC9GuwIMRgMBtOr+T/glCpaWdfP6gAAAABJRU5ErkJggg==\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%R -w 600 -h 400\n", + "upset(\n", + " movies,\n", + " genres,\n", + " min_size=10,\n", + " width_ratio=0.2,\n", + " stripes=upset_stripes(\n", + " geom=geom_segment(size=5),\n", + " colors=c('cornsilk1', 'deepskyblue1', 'grey90')\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mapping stripes attributes to data using `upset_stripes()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAgAElEQVR4nOzdd3wT9f8H8HdGV9JNW+igILNAQXahbKGgDMuSJasIOEBEQfEnyBD8giIUnPhFBAXhy56yQQoVKEORVYGyagctLV3ZySW/PyI1pknIXY4mbV7Px/fxffRGX/e+JPbNXe7uIzAYDAQAAOCuhM4uAAAAwJnQCAEAwK2hEQIAgFtDIwQAALeGRggAAG4NjRAAANwaGiEAALg1NEIAAHBraIQAAODWxM4uAFwFq2cMGQwGgUDA46aRhjSkcUjjcdPuDI0QiIh0Op1Wq7VzZYZhtFqtt7c3L5tGmiuk6XQ6nU6HtKqVJhQKvby8eNm0m0MjBCIisVgsFtv7YdBoNAzD+Pj48LJppLlCmlqt1uv1SKtOaWA/fEcIAABuDY0QAADcGhohAAC4NTRCAABwa2iEAADg1tAIAQDAraERAgCAW0MjBAAAt4Yb6sGCUaNGOR6yceNGx0MAAJ42HBECAIBbQyMEAAC3hkYIAABuDY0QAADcGhohAAC4NTRCAABwa2iEAADg1tAIAQDAraERAgCAW8OTZaqnsrIyPz8/hmGSk5Plcnl0dHRSUpLZpLNrBABwCTgirIZ++eWX1atXE9HZs2fr1q07b968goKCrKwss0lnlwkA4BLQCKubvLy8lJQU488ZGRmxsbFEFBsbm5GRYTbpzCoBAFwGTo1WK3q9ft26dWPGjNm9ezcRyWQyiURCRD4+PjKZzGzS9Bd1Op1KpeK3GLNN2KiZYRg7V0baU0pjGAZpVS5NKBQa/4sGB6ERVivbtm3r3bu3n5+fcVIqlSoUCiJSKpVSqdRs0ux3RSIRv8XYHygQCHjcOtI4MBgMer0eaVUrTSjEKT1+oBFWKwqFYt++fWq1Ojs7+8CBAw0bNkxPT4+JiUlPTx82bJinp6fppOkvisVisZjnD4OPj489q2k0GoZh7FwZaU8pTa1W6/V6pFWnNLAfGmG1Mn78eCLKz8/fsGHDCy+8wDDMl19+uXTp0po1a0ZFRYWHh5tOOrtYAACXgEZYDYWFhb3zzjtEJBKJ3nrrrfL5ZpMAAEC4ahQAANwcGiEAALg1NEJ4MoFAwPulNAAALgJ/3eDJhg8f7u3tvW7dOiLq3bt3nz59fHx8Ll26tGbNGoZhhgwZ0q1bN71ev3fv3mPHjjm7WAAAdtAI4QmaNGnSq1ev1NRUImrQoEHfvn3nzJmj1+vfeeedXr16PXr0qE2bNnPmzBGLxbNnz7558+Zff/3l7JIBAFjAqVGwRSKRjBo1as+ePcbJoKCgY8eOyWQyhULx22+/hYWFNWrU6MKFC6WlpY8ePbpw4ULbtm2dWzAAAFtohGDLhAkTduzYUVpaapw8f/783r17iSggIKBbt24XL17Mysp69tlnJRKJv79/y5YtAwICnFovAABrODUKVnXu3FmlUv3+++/du3c3nd+9e/eBAwdu3Ljx+vXrQqGwXr16n332mVwuz8rKUqvVTioWAIAjNEKwqmPHjnXq1ElOTvbx8RGLxT4+PqtWrZoyZYpIJJo7d275YeKPP/64du1aIho7duzDhw+dWjIAAGtohGDV0qVLjT907969bt2669ata9++va+v75IlS8rXiYiImDJlyrx583x9fdu2bTtnzhwnFQsAwBEaIbDQuHHjJk2afPfdd8bJ48ePb9y48bfffluxYkVJScnq1avLDxMBAKoKNEJ4shMnThh/WL9+/fr1682Wbt26devWrZVdEwAAT3DVKAAAuDU0QgAAcGtohAAA4NbQCAEAwK2hEQIAgFtDIwQAALeGRggAAG4N9xECEZFOp+P9MaFyudye1RiGYRjGzpUrOU2v17tJmiu/C0izRigU+vj48LJpN4dGCEREYrGY9zHopVKpPatpNBqlUmnnypWfptfr3SFNrVYbDAakVac0sB9OjQIAgFtDIwQAALeGRggAAG4NjRAAANwaGiEAALg1NEIAAHBraIQAAODW0AgBAMCtoRECAIBbQyMEAAC3hkYIAABuDY0QAADcGhohAAC4NTRCAABwa2iEAADg1tAIAQDAraERAgCAW0MjBAAAt4ZGCAAAbk3s7AKAT0VFRcnJyR4eHrVq1Zo4caJer09OTpbL5dHR0UlJSQzDmE46u1gAAJeAI8Jq5fDhw3369Pnwww+Liopu37599uzZunXrzps3r6CgICsry2zS2cUCALgENMJqpXfv3u3atSspKZHL5TVq1MjIyIiNjSWi2NjYjIwMs0lnFwsA4BJwarRaCQoKUqvVS5cuFYvFEolEJpNJJBIi8vHxkclkZpOmv6hSqczmOK6goOAprYw0pCGNiMRicWBgII+bdltohNVKQUFBjRo1Fi1a9L//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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%R -w 600 -h 400\n", + "genre_metadata = data.frame(\n", + " set=c('Action', 'Animation', 'Comedy', 'Drama', 'Documentary', 'Romance', 'Short'),\n", + " shown_in_our_cinema=c('no', 'no', 'on weekends', 'yes', 'yes', 'on weekends', 'no')\n", + ")\n", + "\n", + "upset(\n", + " movies,\n", + " genres,\n", + " min_size=10,\n", + " width_ratio=0.2,\n", + " stripes=upset_stripes(\n", + " mapping=aes(color=shown_in_our_cinema),\n", + " colors=c(\n", + " 'yes'='green',\n", + " 'no'='red',\n", + " 'on weekends'='orange'\n", + " ),\n", + " data=genre_metadata\n", + " )\n", + ")" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -1944,7 +2022,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1969,7 +2047,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -2001,7 +2079,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -2046,7 +2124,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -2121,7 +2199,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -2154,7 +2232,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -2179,7 +2257,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -2234,7 +2312,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -2263,7 +2341,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -2312,7 +2390,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -2377,7 +2455,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -2402,7 +2480,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -2434,7 +2512,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -2459,7 +2537,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -2484,7 +2562,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -2509,7 +2587,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -2554,7 +2632,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -2579,7 +2657,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -2588,7 +2666,7 @@ "['Action', 'Animation', 'Comedy', 'Drama', 'Documentary', 'Romance', 'Short']" ] }, - "execution_count": 58, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -2599,7 +2677,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -2638,7 +2716,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 62, "metadata": {}, "outputs": [ { @@ -2689,7 +2767,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 63, "metadata": {}, "outputs": [], "source": [ @@ -2710,7 +2788,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -2757,7 +2835,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -2805,7 +2883,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 66, "metadata": {}, "outputs": [ { @@ -2859,7 +2937,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -2903,7 +2981,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -2946,7 +3024,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -2989,7 +3067,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 70, "metadata": {}, "outputs": [], "source": [ @@ -3010,7 +3088,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 71, "metadata": {}, "outputs": [ { @@ -3066,7 +3144,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -3102,7 +3180,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -3145,7 +3223,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 74, "metadata": {}, "outputs": [ {