Как использовать научную нотацию в Pairplot (seaborn) - PullRequest
0 голосов
/ 07 июня 2018

Есть ли способ заставить научную нотацию использовать Seporn's Pairplot? Я надеюсь на некоторую согласованность между графиками (примеры ниже).Я нашел предложения для других участков морского происхождения, но ничего не реализовал с помощью Pairplot.

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

Версии:
seaborn 0.8.1
numpy 1.13.1
matplotlib 2.0.2
pandas 0.23.0

Текущий график:

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') 

Неудачные попытки переформатирования:

  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})
    

Ток: currentplot

Цель: goalplot

1 Ответ

0 голосов
/ 08 июня 2018

Вам необходимо применить ваш форматер к каждой из осей, созданных pairplot.на самом деле, осей на краю было бы достаточно, но проще одинаково применить ко всем осям одинаково.Я бы сделал:

for ax in g.axes.flatten():
    ax.ticklabel_format(style='sci', scilimits=(0,0), axis='both')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...