Кривая на тепловой карте SeabornPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Кривая на тепловой карте Seaborn

Сообщение Anonymous »

Я пытаюсь воспроизвести этот график:
Изображение

Вот мой код:

Код: Выделить всё

#trials_per_sim_list = np.logspace(1, 6, 1000).astype(int)
trials_per_sim_list = np.logspace(1, 5, 100).astype(int)
trials_per_sim_list.sort()

sharpe_ratio_theoretical = pd.Series({num_trials:get_expected_max_SR(num_trials, mean_SR = 0, std_SR = 1)
for num_trials in trials_per_sim_list})
sharpe_ratio_theoretical = pd.DataFrame(sharpe_ratio_theoretical, columns = ['max{SR}'])
sharpe_ratio_theoretical.index.names = ['num_trials']

sharpe_ratio_sims = get_max_SR_distribution(
#num_sims = 1e3,
num_sims = 100,
trials_per_sim_list = trials_per_sim_list,
mean_SR = 0.0,
std_SR = 1.0)

heatmap_df = sharpe_ratio_sims.copy()

heatmap_df['count'] = 1
heatmap_df['max{SR}'] = heatmap_df['max{SR}'].round(3)
heatmap_df = heatmap_df.groupby(['num_trials', 'max{SR}']).count().reset_index()
heatmap_df = heatmap_df.pivot(index = 'max{SR}', columns = 'num_trials',
values = 'count')
heatmap_df = heatmap_df.fillna(0)

heatmap_df = heatmap_df.sort_index(ascending = False)

fig, ax = plt.subplots()

sns.heatmap(heatmap_df, cmap = 'Blues', ax = ax)
sns.lineplot(x = sharpe_ratio_theoretical.index,
y = sharpe_ratio_theoretical['max{SR}'],
linestyle = 'dashed', ax = ax)

plt.show()
Я думаю, проблема в том, что тепловая карта отображается в логарифмическом масштабе, потому что я ввел логарифмический масштаб, а мой линейный график не отображается на сохраненных значениях. На данный момент мой результат таков:
Изображение

Если вы хотите увидеть код, который я использую для функций, перейдите сюда: https://github.com/charlesrambo/ML_for_ ... apter_8.py
Изменить: Пока ответа нет. Если сбивает с толку часть, связанная с количественными финансами, вот более простой пример. Я хотел бы добавить в свой график график y = 1/sqrt{x}. Вот код:

Код: Выделить всё

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

vals = np.logspace(1, 6, 100).astype(int)

theoretical_values = pd.Series(1/np.sqrt(vals), index = vals)

exprimental_values = pd.DataFrame(columns = ['num', 'std'])

num_runs = 1000
trials_per_run = 10

for n in vals:

for _ in range(num_runs):

dist = stats.norm.rvs(size = (trials_per_run, n)).mean(axis = 1)

temp = pd.DataFrame([[n, np.std(dist, ddof = 1)]],
columns = ['num', 'std'])

exprimental_values = pd.concat([exprimental_values, temp], axis = 0,
ignore_index = True)

heatmap_df = exprimental_values.copy()
heatmap_df['count'] = 1
heatmap_df['std'] = heatmap_df['std'].round(3)

heatmap_df = heatmap_df.groupby(['num', 'std'])['count'].sum().reset_index()

heatmap_df = heatmap_df.pivot(index = 'std', columns = 'num', values = 'count')

heatmap_df = heatmap_df.fillna(0)

heatmap_df = heatmap_df.div(heatmap_df.sum(axis = 1), axis = 0)

heatmap_df = heatmap_df.sort_index(ascending = False)

fig, ax = plt.subplots()

sns.heatmap(heatmap_df, cmap = 'Blues', ax = ax)

sns.lineplot(x = theoretical_values.index, y = theoretical_values, ax = ax)

plt.show()
Я получаю это:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/793 ... ap-seaborn
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Кривая на тепловой карте Seaborn
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Кривая на тепловой карте Seaborn
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Кривая на тепловой карте Seaborn
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Пользовательская функция в тепловой карте AM5, чтобы установить диапазон цветов для тепловой карты вместо двух (мин и ма
    Anonymous » » в форуме Jquery
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Изменение масштаба оси Y на тепловой карте Seaborn
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»