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 has been great to see the high level of engagement with my weekly critique videos on YouTube. I have really enjoyed making them and have learned a lot about current practices in data visualization. The one problem with these videos is that they’re a bit like an autopsy. We can figure out what went well or what didn’t work in a published figure. But we can’t do much to improve the published figure. What if we could do critiques before submitting our papers, preparing a...

Hey folks, This week I want to share with you a figure that resembles many a type of figure that I see in a lot of genomics papers. I’d consider it a data visualization meme - kind of like how you’re “required” to have a stacked bar plot if you’re doing microbiome research or a dynamite plot if you’re publishing in Nature :) This figure was included in the paper, “Impact of intensive control on malaria population genomics under elimination settings in Southeast Asia” that was published...

Hey folks! I hope you enjoyed last week’s series on the radial volcano plot (newsletter, critique video, livestream). I think it did a good job of illustrating the various reasons I think it’s valuable to recreate figures, even if we don’t like how they display the data. Something I didn’t really emphasize in last week’s newsletter was that by recreating a figure, we can make sure that the data are legit. I’m surprised by the number of signals I’ve been finding where authors using tools like...