You should be able to achieve this using the |.frb| attribute of any slice plot object (or projection plot actually).
|def combine_by_value(a: np.ndarray, b: np.ndarray) -> np.ndarray: """Combine two RGB(a) arrays into one. Parameters --------------- a : RGBa array The array to take the value from. This works well if a is in gray scales b : RGBa array The array to take hue and saturation from. Returns ----------- c : RGB array An array with hue and saturation from b and value from a. """ # Note: rgb_to_hsv only accepts RGB arrays, not RGBa ones so we need to strip out the alpha channel a_hsv, b_hsv = (plt.matplotlib.colors.rgb_to_hsv(_[..., :3]) for _ in (a, b)) # We get the saturation from a and the hue/value from b c_hsv = b_hsv.copy() c_hsv[..., 2] = a_hsv[..., 2] return plt.matplotlib.colors.hsv_to_rgb(c_hsv) p = yt.SlicePlot(ds, …) dens = p.frb["gas", "density"] # this will be the 2D array that would have been plotted otherwise neutral = p.frb["gas", "neutral_fraction"] # or whatever name your field has fig, ax = plt.subplots() norm = plt.matplotlib.colors.LogNorm # Apply colour maps to our two fields dens_colors = plt.cm.Grays(norm()(dens)) neutral_colors = plt.cm.Oranges(norm()(neutral)) # Now we mix them combined_colors = combine_by_luminosity(dens_colors, neutral_colors) ## You could also do something like # combined_colors = (dens_colors + neutral_colors) / 2 plt.imshow(combined_colors) |
On 04/03/2022 01:32, Nick Gnedin wrote:
I wonder if I can plot slices of two fields overlaid, with the top field being partially translucent, so that the bottom field is also visible. Specifically, I would like to show gas density in greyscale, overlaid with the neutral fraction with low opacity and a sequential cmap like "Oranges", then the relation between the gas density and ionized regions will be very visible.
yt-users mailing list -- firstname.lastname@example.org To unsubscribe send an email to email@example.com https://mail.python.org/mailman3/lists/yt-users.python.org/ Member address: firstname.lastname@example.org