Tyler Morgan-Wall
banner
tylermw.com
Tyler Morgan-Wall
@tylermw.com
R, data science, dataviz, maps, experimental design, raytracing. Developer of rayshader, rayrender, and the rayverse | PhD in Physics from Johns Hopkins | Penn
Nice work!
November 18, 2025 at 3:57 PM
(Note that the background was clear here in the original image: apparently Bluesky doesn't support alpha transparency in images, which is disappointing because the bird site did! Feature request to @support.bsky.team)
November 18, 2025 at 3:57 PM
Set `shadow = FALSE` in plot_3d(), which will remove the ground. Then set `transparent_background = TRUE` in `render_highquality()`, which will ensure any rays that intersect with the background are marked as transparent. This also will give you softer, anti-aliased edges versus a hard mask.
November 18, 2025 at 3:53 PM
You can see the difference in the JFA by looking at the areas where the bonds and atoms intercept here in a molecule rendered with #raymolecule. The old method worked by placing an inverted mesh over the mesh, which results in issues where other meshes intersect (note the black lines on the bonds)
November 17, 2025 at 1:50 PM
You can generate these materials via the rayvertex package (available in #rayshader with `render_snapshot(software_render = TRUE)`: practically, these can be mixed and matched with other materials when you want to emphasize (via visual separation) some element of the scene. #Dataviz
November 17, 2025 at 1:50 PM
ggplot(myself) +
geom_jittery()
November 17, 2025 at 4:30 AM
RStudio crashed mid-way because the window resized mid-plot 🤷‍♂️
November 14, 2025 at 3:58 PM
60 million!

It's also fitting GAMs (for geom_smooth) across multiple facets and groups within each facet, so I should be well-caffeinated by the time it's done plotting
November 14, 2025 at 3:11 PM
The fix was as simple as switching to a graphics device (cairo/ragg) that has the expected OETF when writing sRGB images, unlike quartz, which can apparently give you a gamma of 1.8 (which hasn't been the default on macOS since 2009's Snow Leopard 🧐).
November 12, 2025 at 5:23 AM
rayshader's plot_gg() extrudes a ggplot into 3D by transforming the data in the ggplot into a greyscale image and then reading that back into rayshader, but it turns out the quartz grDevice::png() and png::readPNG() don't necessarily agree on the value of gamma, leading to the non-linearity above.
November 12, 2025 at 5:23 AM
Thanks Adam! I'm looking forward to writing a vignette that's basically just a photography tutorial 😀
November 10, 2025 at 9:14 PM
Manhattanhenge: On May 28th/July 13th, the sun aligns with Manhattan's street grid 29° from N. This twice-a-year alignment of urban planning and orbital motion serves both as a temporal tourist attraction as well as a particular good test case for geospatial skymap alignment! #RStats #rayrender
November 9, 2025 at 10:49 PM
pen and paper!
November 9, 2025 at 3:47 PM
Rendering the peak of Mount Everest from sunrise to sunset in R with rayshader and rayrender

#RStats #rayrender #rayshader #rayverse
November 9, 2025 at 4:41 AM