|
Hey folks, In last week’s newsletter, I introduced a new approach that I plan on taking in these emails to help you develop your intuition with visualizing data in R (or any language). I asked you to consider a random figure that I found in the most recent issue of the journal mSphere. It’s Figure 1A from the paper, “Exploring novel microbial metabolites and drugs for inhibiting Clostridioides difficile” by Ahmed Abouelkhair and Mohamed Seleem. The figure shows the level of inhibition of bacterial growth by 527 compounds; 63 of the compounds were deemed “strong hits” because they inhibited growth by at least 90%. Without worrying about actual code, I encouraged you to think about the data and functions you’d need to generate this figure. Here were my random thoughts: This is a scatter plot with compounds giving more than 90% inhibition were a burgundy color and those with less were given a green color. There’s also a dashed line indicating the 90% threshold. It took me a minute or two to notice that the x-axis is meaningless. It’s likely the order of the compounds in their database (there seems to be a non-random pattern to the data about 3/4th the way across the axis). I also noticed that there’s no line on the x-axis, but there is a line at zero. Those are the parts of the figures, described in a way that you could probably use to make a similar looking figure with any tool. Now, how would we do this in R? Let’s start with the data. I assume that the data will be a data frame with two columns, one for the compound name ( I do everything in ggplot2 nowadays, so I start thinking about what geom I’ll use. Probably Next, I’d think about the colors. I’d use Let’s move on to the x-axis and the two lines. First, I’d use the Now let’s think about the y-axis. By default we might get the values on the y-axis that the figure already has. But to be safe, we can use I think that’s everything, right? I’d encourage you to go back through that narrative and assess what you do and don’t understand. Then look at online R resources, including my Riffomonas materials (MinimalR and generalR) and the R Graphics Cookbook for examples of how to use the new concepts. Finally, see if you can generate the figure yourself using some simulated data. The code below should be close enough to what you need:
Please let me know how this works out for you! Also, if you have a favorite figure that you'd love to see me break down, reply to this email and I'll see about using it in a future newsletter
|
Hey folks, We had a lot of fun last week with my first workshop on the theory of data visualization! If this is something that you’d be interested in participating in let me know. At this point, I don’t have anything scheduled. So, if you have suggestions for days or times, please let me know This week I have a fun figure to share with you from a paper recently published in Nature Microbiology, titled, “Candida auris skin tropism and antifungal resistance are mediated by carbonic anhydrase...
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...
Hey folks, What a year! This will be the last newsletter of 2025 and so it’s a natural break point to think back on the year and to look forward to the next. Some highlights for me have been recreating a number of panels from the collection of WEB DuBois visualizations on YouTube, recreating plots from the popular media, and modifying and recreating figures from the scientific literature. I guess you could say 2025 was a year of “recreating”! I have found this approach to making...