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, It’s great to be back sending out this newsletter and posting videos! I hope you had a chance to check out the critique and livestream that I posted earlier this week. To be honest, I almost didn’t cover these figures because I truly strive to be constructive in this newsletter and in my content. Please feel free to email me if you think I should pull together a more formal description of the issues in the original paper to send to the authors before sending out to Nature...

Hey folks, It turns out that I sent out last week’s newsletter a week earlier than I should have. I had every intention of posting a critique video on Monday and doing a livestream on Wednesday. Alas, I didn’t totally have control of my schedule and neither video got up. Regardless, I’m glad I sent the newsletter out last week because it got me going. Inertia is a powerful thing. If we never start - even if it’s a false start - we will never get going. Rest assured that the videos will come...

Hey folks! I’m excited to be firing up the newsletter and YouTube feed again for the academic year. I hope you all had a great summer and were able to get a lot done while enjoying the opportunity to rest a bit. This summer I was able to finally resubmit and publish a manuscript I’ve been working on for a few years to rarefaction. This is now my third paper on rarefaction. Don’t worry, it’s the same story. If you are analyzing microbiome data, please use rarefaction. This paper raised a few...