What do you think of petal plots? How would you make one in R?


Hey folks,

Happy 2026! It’s great to be joining you on another trip around the sun as we explore data visualization, R, and reproducible research. Later today I’ll be hosting a workshop on the design of data visualizations. If you register ASAP, I can probably still get you in. If you missed this one, but would like to be notified when I run this workshop again, reply to this email and let me know!


This week I found a pretty unique plot type in a paper published in the journal Nature

This is Figure 2 from the open access paper titled, “Nutrient requirements of organ-specific metastasis in breast cancer” by Keene Abbott and colleagues. I’m not totally convinced of what I think of this figure yet, so stay tuned for Monday’s critique video. This is what’s called a “petal plot” since each of the wedges coming out of the center looks like a petal of a flower.

I really like how they provide an interpretative key for the plots in panel b. They do the same type of thing in Figure 3. I like this because they are acknowledging that this is a novel plot type and want to help their audience interpret the figures correctly.

I was surprised to see that this figure was made using GraphPad Prism! My institution threatened (once again) to cancel our site license to Prism sending shock waves of panic through campus. Whether they intend to follow through on their threats this time remains to be determined. So, I naturally wondered how I’d go about making this plot in R. FOR FREE!

The most striking part of this figure are the petal plots. I know that a pie chart is a stacked bar plot in polar coordinates. I wondered whether a set of side-by-side bar plots in polar coordinates could get us the petal look. Sure enough it does! We can map the metastasis site (e.g., brain, lung, liver) to the x-axis, the level of depletion to the y-axis, and the gene (e.g., DHODH, GART) to the fill color. The bar plot can be generated using geom_col(). We can circularize the bar plots using coord_radial() to make the petal plots. The coord_radial() function has some arguments we might want to use to adjust the starting point so that the brain data is at 12:00 and bone is at 6:00 (we’ll likely also have to use factors to get the order of the sites, genes, and cell lines correct).

They also include 95% confidence intervals. We can get these as well using geom_errorbar() mapping the lower and upper confidence interval data to the ymin and ymax aesthetics. By default, geom_errorbar() will put a cap at the end of the error bar. To remove the cap and get the appearance seen in this figure, we can set width = 0.

Of course, there isn’t just one petal plot. There are 18. We can match their appearance by using facet_grid() putting the genes across the columns and the cell lines across the rows. There are a variety of arguments in facet_grid() and theme() that we’ll need to play with to get the facet titles positioned correctly.

What do you think of petal plots? They remind me of radar or spider or web charts. Regardless, I look forward to trying to recreate and possibly offer some improvements in next week’s livestream video. If you want to get a head start, you can download the data for free from the Nature website.

Workshops

I'm pleased to be able to offer you one of three recent workshops! With each you'll get access to 18 hours of video content, my code, and other materials. Click the buttons below to learn more

In case you missed it…

Here is a livestream that I published this week that relate to previous content from these newsletters. Enjoy!

video preview

Finally, if you would like to support the Riffomonas project financially, please consider becoming a patron through Patreon! There are multiple tiers and fun gifts for each. By no means do I expect people to become patrons, but if you need to be asked, there you go :)

I’ll talk to you more next week!

Pat

Riffomonas Professional Development

Read more from Riffomonas Professional Development

Hey folks, If you missed Wednesday’s livestream, I encourage you to go back and check it out. I recreated a panel from a paper published in Nature that is pretty typical. It was made up entirely of photographs. Sometimes I feel like I’m the only PI that doesn’t merge panels into figures using Illustrator or Powerpoint. I prefer to use R with some help from {cowplot} or {patchwork} to do this for me. That way I can write a single script to generate the entire set of panels. The result is a...

Hey folks, This week I’ve been teaching one of my 3 day R workshops as part of my official teaching duties at the U of Michigan. I really enjoy teaching these classes! I offer recorded versions of these workshops that use microbiome data or other types of data to help motivate my teaching of R’s tidyverse packages. If you would like to purchase your own version of these workshop click on those links! Also, if you would like me to teach a live workshop to your group, reply to this email and...

Hey folks, If you missed it, on Wednesday I did a livestream where I made a stacked barplot and pronounced it good. No, I wasn’t drinking anything! But it’s a reminder to think about the question before finding the best data visualization strategy. I think this highlights the value of the constructive approach I’ve been trying to take to critiquing data visualizations. The first steps are to establish the question and figure out the question. If you aren’t a “regular”, I think you’re really...