Source code for limix_lmm.plot._qqplot

import scipy as sp


[docs]def qqplot( ax, pv, color="k", plot_method=None, line=False, pv_thr=1e-2, plot_xyline=False, xy_labels=False, xyline_color="r", ): """ Utility function to make manhattan plot Parameters ---------- ax : pyplot plot subplot df : pandas.DataFrame pandas DataFrame with chrom, pos and pv color : color colors to use in the manhattan plot (default is black) plot_method : function function that takes x and y and plots a custom scatter plot The default value is None. pv_thr : float threshold on pvs plot_xyline : bool if True, the x=y line is plotteed. The default value is False. Examples -------- .. doctest:: >>> from limix_lmm.plot import qqplot >>> import scipy as sp >>> from matplotlib import pyplot as plt >>> >>> pv1 = sp.rand(10000) >>> pv2 = sp.rand(10000) >>> pv3 = sp.rand(10000) >>> >>> ax = plt.subplot(111) >>> qqplot(ax, pv1, color='C0') >>> qqplot(ax, pv2, color='C1') >>> qqplot(ax, pv3, color='C2', plot_xyline=True, xy_labels=True) """ pv1 = pv[pv < pv_thr] pvo = -sp.log10(sp.sort(pv1)) pvt = -sp.log10(sp.linspace(0, pv_thr, pv1.shape[0] + 2)[1:-1]) if plot_method is not None: plot_method(pvt, pvo) else: ax.plot(pvt, pvo, marker=".", color=color) if plot_xyline: xlim1, xlim2 = ax.get_xlim() ylim1, ylim2 = ax.get_ylim() xlim1 = -sp.log10(pv_thr) ylim1 = -sp.log10(pv_thr) ax.plot([xlim1, xlim2], [xlim1, xlim2], xyline_color) ax.set_xlim(xlim1, xlim2) ax.set_ylim(ylim1, ylim2) if xy_labels: ax.set_xlabel("Expected P values") ax.set_ylabel("Observed P values")