Source code for lib5c.plotters.scatter

"""
Module for plotting scatterplots of x-y graphs.
"""

import matplotlib.pyplot as plt

from lib5c.util.plotting import plotter, compute_hexbin_extent


[docs]@plotter def scatter(x, y, logx=True, logy=True, hexbin=True, xlim=None, ylim=None, **kwargs): """ Plots a scatterplot of data, either as a scatterplot or a hexbin plot. Parameters ---------- x, y : np.ndarray The data points. logx, logy : bool Log the x- and/or y-axis. hexbin : bool Pass True to plot a hexbin plot instead of a scatterplot. kwargs : kwargs Typical plotter kwargs. Returns ------- pyplot axis The axis plotted on. Notes ----- If both xlim and ylim are passed as kwargs and hexbin=True, this function will attempt to set the extent of the hexbin plot using the xlim and ylim. """ if hexbin: extent = compute_hexbin_extent(xlim, ylim, logx, logy) plt.hexbin(x, y, xscale='log' if logx else None, yscale='log' if logy else None, bins='log', cmap='Blues', linewidths=0.1, extent=extent) else: if logx: plt.gca().set_xscale('log') if logy: plt.gca().set_yscale('log') plt.scatter(x, y)