简体   繁体   中英

How to use scientific notation in Pairplot (seaborn)

Is there a way to force scientific notation using Seaborn's Pairplot? I'm hoping for some consistency between plots (examples below). I've found suggestions for other seaborn plots, but have not successfully implemented anything with Pairplot.

https://seaborn.pydata.org/generated/seaborn.pairplot.html

Versions:
seaborn 0.8.1
numpy 1.13.1
matplotlib 2.0.2
pandas 0.23.0

Current plot:

import numpy as np
import pandas as pd
import seaborn as sns
from scipy import stats
import matplotlib.pyplot as plt

#remove NAs
dfna = df.dropna()

#Correlation function
mean = np.zeros(3)
cov = np.random.uniform(.2, .4, (3, 3))
cov += cov.T
cov[np.diag_indices(3)] = 1

def corrfunc(x, y, **kws):
    r, _ = stats.pearsonr(x, y)
    ax = plt.gca()
    ax.annotate("{:.2f}".format(r),
            xy=(.3, .45), xycoords=ax.transAxes, fontsize = 30)

#2D regression + distribution
p = sns.pairplot(dfna, diag_kind="kde", diag_kws=dict(shade=True, color = "Blue"), plot_kws=dict(s=5, edgecolor="Blue", color = "Blue", linewidth=1))
p.fig.text(0.5, 1.00,'BLAHH', fontsize=30)
p.map_upper(plt.scatter, color = "White", edgecolor = "White")
p.map_upper(corrfunc)
p.fig.text(0.35, -0.04, "xxx", ha ='left', fontsize = 20)
p.fig.text(-0.04, 0.68, "xxx", ha ='left', fontsize = 20, rotation = 90)

#p.savefig('pairplot.svg') 

Unsuccessful attempts to reformat:

  1.  plt.ticklabel_format(style = 'sci')
  2.  import matplotlib.ticker as tkr formatter = tkr.ScalarFormatter(useMathText=True) formatter.set_scientific(True) p = sns.pairplot(dfna, plot_kws = {'format': formatter})

Current:当前图

Goal:球门图

You need to apply your formatter to each of the axes created by pairplot . actually, the axes on the edge would be sufficient, but it's easier to apply the same thing to all axes equally. I would do:

for ax in g.axes.flatten():
    ax.ticklabel_format(style='sci', scilimits=(0,0), axis='both')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM