ggpattern icon indicating copy to clipboard operation
ggpattern copied to clipboard

`treemapify::geom_treemap()` support

Open luisDVA opened this issue 5 years ago • 3 comments

Hi, As discussed on Twitter, just requesting support for pattern fill in treemaps created by treemapify::geom_treemap. I'll try to work on it myself and send a PR, but I'm not too confident about it. cheers

luisDVA avatar May 26 '20 19:05 luisDVA

This would be a great feature to have!

BernhardClemm avatar Apr 11 '24 19:04 BernhardClemm

A user recently wrote in an email:

I recently wanted to apply patterns to geom_treemap() ... I am wondering whether this is on your agenda – and whether I could potentially help building this functionality ... Let me know whether my contribution could make sense, and if so how I could best get going (would probably need a short intro to the logic of the package).

  • Adding new geoms like this one isn't on my agenda for #104

  • A PR that adds support for this functionality would be welcome and I could help guide potential contributors through the process

  • After the release of ggplot2 v3.5.0 there are two approaches to adding pattern support to a geom:

    • Update the original geom to support grid::pattern() / gradient fills (I opened an issue for this at https://github.com/wilkox/treemapify/issues/50)

      • Pros: Low amount of developer effort
      • Cons: Works in fewer graphics devices and versions of R, less ability to customize patterns in legends and with scales
    • Add a new geom based on the original geom to {ggpattern}

      • Pros: Works in more graphics devices and versions of R, more ability to customize patterns in legends and with scales
      • Cons: High amount of developer effort
  • If you desire to add a new geom to {ggpattern} some notes:

    • One can use a good difftool like nvim -d to compare the geom files in {ggpattern} with those in {ggplot2}:

      • https://github.com/trevorld/ggpattern/pull/118 aims to reduce the visual differences between {ggpattern} and {ggplot2} 3.5 in such tools
    • We usually inherit the original Geom so we don't need to duplicate data setup code

    • We usually add some code to handle the new pattern aesthetics

    • We usually update the drawing code to instead of drawing one polygon/rect/path to instead

      • Draw the polygon/rect/path with fill and no border
      • Draw the patterns
      • Draw the polygon/rect/path with no fill and the col border
  • You may need to copy and paste code from {treemapify} and/or ask them nicely to export more low-level functionality

    • Currently {ggpattern} is under the MIT license and {treemapify} is under the GPL-3 license. You may need to ask them nicely if you can copy the relevant code under the MIT license terms instead. They seemed willing to do this for the plotly team: https://github.com/wilkox/treemapify/issues/40 .
  • If importing code from {treemapify} please put the package in the Suggests instead of Imports field of our DESCRIPTION

trevorld avatar Apr 24 '24 16:04 trevorld

  • Pattern fills (such as those returned by gridpattern::patternFill()) should now work in the development version of {treemapify}: https://github.com/wilkox/treemapify/commit/082641ae9acd1461a59066dd2a1ec833be7c2d72
  • We'll keep this issue open in case someone would like to add a PR for a geom_treemap_pattern()

trevorld avatar Jun 14 '24 15:06 trevorld