python - 将直方图集成到引导模拟图中

标签 python pandas matplotlib histogram simulation

我有一个数据框,其中包含 1000 次投资组合 yield 模拟。我可以绘制模拟图并分别制作相应的直方图,但我完全不知道如何合并它们以类似于下图:

Example of desired output

请采用以下数据示例以便于回答:

import numpy as np
import pandas as pd

def simulate_panel(T, N):

    """" This function simulates return paths"""

    dates = pd.date_range("20210218", periods=T, freq='D')
    columns = []

    for i in range(N):
        columns.append(str(i+1))

    return pd.DataFrame(np.random.normal(0, 0.01, size=(T, N)), index=dates, 
    columns=columns)

df=(1+simulate_panel(1000,1000)).cumprod()

df.plot(figsize=(8,6),title=('Bootstrap'), legend=False)

提前非常感谢您。

最佳答案

要根据曲线的最后一个值对曲线进行着色,可以逐条绘制它们。通过颜色图和范数,可以将值转换为适当的颜色。使用一定的透明度(alpha),最常访问的位置将被着色得更强。

在第二个子图中,可以绘制垂直直方图,条形颜色相似。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

def simulate_panel(T, N):
    """" This function simulates return paths"""
    dates = pd.date_range("20210218", periods=T, freq='D')
    columns = [(str(i + 1)) for i in range(N)]
    return pd.DataFrame(np.random.normal(0, 0.01, size=(T, N)), index=dates, columns=columns)

df = (1 + simulate_panel(1000, 1000)).cumprod()

fig, (ax1, ax2) = plt.subplots(ncols=2, sharey=True, figsize=(12, 4),
                               gridspec_kw={'width_ratios': [5, 1], 'wspace': 0})
data = df.to_numpy().T
cmap = plt.cm.get_cmap('turbo')
norm = plt.Normalize(min(data[:, -1]), max(data[:, -1]))

for row in data:
    ax1.plot(df.index, row, c=cmap(norm(row[-1])), alpha=0.1)
ax1.margins(x=0)
_, bin_edges, bars = ax2.hist(data[:, -1], bins=20, orientation='horizontal')
for x0, x1, bar in zip(bin_edges[:-1], bin_edges[1:], bars):
    bar.set_color(cmap(norm((x0 + x1) / 2)))
ax2.tick_params(left=False)
plt.tight_layout()
plt.show()

brownian motion with histogram

关于python - 将直方图集成到引导模拟图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67204047/

相关文章:

python - 查找具有相同 r、g 和 b 值的 RGB 像素

python - 将旋转的 xticklabel 与其各自的 xticks 对齐

python - 如何在 pandas 数据帧上使用 sklearn TFIdfVectorizer

python - 使用另一列的值切片 Pandas 列

python - 无法将 python 请求库导入 AWS Lambda 函数

python - 从编译的 csv 读取时,df.corr 将所有数据显示为 1,即使存在不同的数据

python - 在Python中将多列转换为行

python - x 轴刻度线未出现在图表中

python - 配对时更改箱线图的颜色

python - 在python中,如何在绘图中用平滑的线连接点?