Python - с использованием научной нотации с Seaborn - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь создать график kde, используя seaborn в python, но при настройке значений цветовой шкалы для отображения в научной нотации я не вижу разницы.

См. - создание цветовой шкалы с научной нотацией в seaborn для тесно связанной темы.

См. - https://seaborn.pydata.org/generated/seaborn.kdeplot.html для документации по классу seaborn kde.

Есть ли какая-то причина, почему это не работает для kdeкласс или я делаю глупую ошибку в моем форматировании?

import numpy as np
import seaborn as sns
import matplotlib.ticker as tkr

a = np.random.normal(0,1,size=100)
b = np.random.normal(0,1,size=100)

fig, ax = plt.figure(), plt.subplot(111)
formatter = tkr.ScalarFormatter(useMathText=True)
formatter.set_scientific(True)
sns.kdeplot(a,b, n_levels=10, shade=True, cmap='Blues',
            cbar=True, cbar_kws={'format':formatter})

Результат:

enter image description here

Здесь я бы ожидалцветной столбец для отображения индексированной записи, как в первой ссылке в описании этой проблемы.

Большое спасибо заранее!

1 Ответ

1 голос
/ 10 июня 2019

.set_scientific(True) применяется к метке смещения.Здесь у вас нет никакого смещения, поэтому кажется, что оно игнорируется.К сожалению, нет никакого канонического способа отформатировать сами ticklabels в научной записи.

Один метод показан в Могу ли я показать десятичные разряды и научную запись на оси графика matplotlib, используя Python 2.7?

Применяя его здесь:

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker

a = np.random.normal(0,1,size=100)
b = np.random.normal(0,1,size=100)

fig, ax = plt.figure(), plt.subplot(111)

f = mticker.ScalarFormatter(useOffset=False, useMathText=True)
g = lambda x,pos : "${}$".format(f._formatSciNotation('%1.10e' % x))

sns.kdeplot(a,b, n_levels=10, shade=True, cmap='Blues',
            cbar=True, cbar_kws={'format': mticker.FuncFormatter(g)})

plt.show()

enter image description here

...