def corrplot(data, names=None, sig_stars=True, sig_tail="both", sig_corr=True, cmap="Spectral_r", cmap_range=None, cbar=True, ax=None, **kwargs): """Plot a correlation matrix with colormap and r values. Parameters ---------- data : nvars x nobs array data array where rows are variables and columns are observations names : sequence of strings names to associate with variables; should be short sig_stars : bool if True, get significance with permutation test and denote with stars sig_tail : both | upper | lower direction for significance test sig_corr : bool if True, use FWE-corrected significance cmap : colormap colormap name as string or colormap object cmap_range : None, "full", (low, high) either truncate colormap at (-max(abs(r)), max(abs(r))), use the full range (-1, 1), or specify (min, max) values for the colormap cbar : boolean if true, plots the colorbar legend kwargs : other keyword arguments passed to ax.matshow() Returns ------- ax : matplotlib axis axis object with plot """ corrmat = np.corrcoef(data) if sig_stars: p_mat = moss.randomize_corrmat(data, sig_tail, sig_corr) else: p_mat = None if cmap_range is None: triu = np.triu_indices(len(data), 1) vmax = min(1, np.max(np.abs(corrmat[triu])) * 1.15) vmin = -vmax cmap_range = vmin, vmax elif cmap_range == "full": cmap_range = (-1, 1) ax = symmatplot(corrmat, p_mat, names, cmap, cmap_range, cbar, ax, **kwargs) return ax
def corrplot(data, names=None, annot=True, sig_stars=True, sig_tail="both", sig_corr=True, cmap=None, cmap_range=None, cbar=True, diag_names=True, ax=None, **kwargs): """Plot a correlation matrix with colormap and r values. Parameters ---------- data : Dataframe or nobs x nvars array Rectangular nput data with variabes in the columns. names : sequence of strings Names to associate with variables if `data` is not a DataFrame. annot : bool Whether to annotate the upper triangle with correlation coefficients. sig_stars : bool If True, get significance with permutation test and denote with stars. sig_tail : both | upper | lower Direction for significance test. Also controls the default colorbar. sig_corr : bool If True, use FWE-corrected p values for the sig stars. cmap : colormap Colormap name as string or colormap object. cmap_range : None, "full", (low, high) Either truncate colormap at (-max(abs(r)), max(abs(r))), use the full range (-1, 1), or specify (min, max) values for the colormap. cbar : bool If true, plot the colorbar legend. ax : matplotlib axis Axis to draw plot in. kwargs : other keyword arguments Passed to ax.matshow() Returns ------- ax : matplotlib axis Axis object with plot. """ if not isinstance(data, pd.DataFrame): if names is None: names = ["var_%d" % i for i in range(data.shape[1])] data = pd.DataFrame(data, columns=names, dtype=np.float) # Calculate the correlation matrix of the dataframe corrmat = data.corr() # Pandas will drop non-numeric columns; let's keep track of that operation names = corrmat.columns data = data[names] # Get p values with a permutation test if annot and sig_stars: p_mat = moss.randomize_corrmat(data.values.T, sig_tail, sig_corr) else: p_mat = None # Sort out the color range if cmap_range is None: triu = np.triu_indices(len(corrmat), 1) vmax = min(1, np.max(np.abs(corrmat.values[triu])) * 1.15) vmin = -vmax if sig_tail == "both": cmap_range = vmin, vmax elif sig_tail == "upper": cmap_range = 0, vmax elif sig_tail == "lower": cmap_range = vmin, 0 elif cmap_range == "full": cmap_range = (-1, 1) # Find a colormapping, somewhat intelligently if cmap is None: if min(cmap_range) >= 0: cmap = "PuRd" elif max(cmap_range) <= 0: cmap = "GnBu_r" else: cmap = "coolwarm" if cmap == "jet": # Paternalism raise ValueError("Never use the 'jet' colormap!") # Plot using the more general symmatplot function ax = symmatplot(corrmat, p_mat, names, cmap, cmap_range, cbar, annot, diag_names, ax, **kwargs) return ax
def corrplot(data, names=None, annot=True, sig_stars=True, sig_tail="both", sig_corr=True, cmap=None, cmap_range=None, cbar=True, diag_names=True, ax=None, **kwargs): """Plot a correlation matrix with colormap and r values. Parameters ---------- data : Dataframe or nobs x nvars array Rectangular nput data with variabes in the columns. names : sequence of strings Names to associate with variables if `data` is not a DataFrame. annot : bool Whether to annotate the upper triangle with correlation coefficients. sig_stars : bool If True, get significance with permutation test and denote with stars. sig_tail : both | upper | lower Direction for significance test. Also controls the default colorbar. sig_corr : bool If True, use FWE-corrected p values for the sig stars. cmap : colormap Colormap name as string or colormap object. cmap_range : None, "full", (low, high) Either truncate colormap at (-max(abs(r)), max(abs(r))), use the full range (-1, 1), or specify (min, max) values for the colormap. cbar : bool If true, plot the colorbar legend. ax : matplotlib axis Axis to draw plot in. kwargs : other keyword arguments Passed to ax.matshow() Returns ------- ax : matplotlib axis Axis object with plot. """ if not isinstance(data, pd.DataFrame): if names is None: names = ["var_%d" % i for i in range(data.shape[1])] data = pd.DataFrame(data, columns=names, dtype=np.float) # Calculate the correlation matrix of the dataframe corrmat = data.corr() # Pandas will drop non-numeric columns; let's keep track of that operation names = corrmat.columns data = data[names] # Get p values with a permutation test if annot and sig_stars: p_mat = moss.randomize_corrmat(data.values.T, sig_tail, sig_corr) else: p_mat = None # Sort out the color range if cmap_range is None: triu = np.triu_indices(len(corrmat), 1) vmax = min(1, np.max(np.abs(corrmat.values[triu])) * 1.15) vmin = -vmax if sig_tail == "both": cmap_range = vmin, vmax elif sig_tail == "upper": cmap_range = 0, vmax elif sig_tail == "lower": cmap_range = vmin, 0 elif cmap_range == "full": cmap_range = (-1, 1) # Find a colormapping, somewhat intelligently if cmap is None: if min(cmap_range) >= 0: cmap = "OrRd" elif max(cmap_range) <= 0: cmap = "PuBu_r" else: cmap = "coolwarm" if cmap == "jet": # Paternalism raise ValueError("Never use the 'jet' colormap!") # Plot using the more general symmatplot function ax = symmatplot(corrmat, p_mat, names, cmap, cmap_range, cbar, annot, diag_names, ax, **kwargs) return ax
def corrplot(data, names=None, sig_stars=True, sig_tail="both", sig_corr=True, cmap="coolwarm", cmap_range=None, cbar=True, ax=None, **kwargs): """Plot a correlation matrix with colormap and r values. Parameters ---------- data : Dataframe or nobs x nvars array input data names : sequence of strings names to associate with variables; should be short sig_stars : bool if True, get significance with permutation test and denote with stars sig_tail : both | upper | lower direction for significance test sig_corr : bool if True, use FWE-corrected significance cmap : colormap colormap name as string or colormap object cmap_range : None, "full", (low, high) either truncate colormap at (-max(abs(r)), max(abs(r))), use the full range (-1, 1), or specify (min, max) values for the colormap cbar : boolean if true, plots the colorbar legend kwargs : other keyword arguments passed to ax.matshow() Returns ------- ax : matplotlib axis axis object with plot """ if not isinstance(data, pd.DataFrame): if names is None: names = ["var_%d" % i for i in range(data.shape[1])] data = pd.DataFrame(data, columns=names, dtype=np.float) # Calculate the correlation matrix of the dataframe corrmat = data.corr() # Pandas will drop non-numeric columns; let's keep track of that operation names = corrmat.columns data = data[names] # Get p values with a permutation test if sig_stars: p_mat = moss.randomize_corrmat(data.values.T, sig_tail, sig_corr) else: p_mat = None # Paternalism if cmap == "jet": raise ValueError("Never use the 'jet' colormap!") # Sort out the color range if cmap_range is None: triu = np.triu_indices(len(corrmat), 1) vmax = min(1, np.max(np.abs(corrmat.values[triu])) * 1.15) vmin = -vmax cmap_range = vmin, vmax elif cmap_range == "full": cmap_range = (-1, 1) # Plot using the more general symmatplot function ax = symmatplot(corrmat, p_mat, names, cmap, cmap_range, cbar, ax, **kwargs) return ax