import pandas as pd
import matplotlib.pyplot as plt

# 假设你已经有了 grouped_by_interval 数据框
# 这里我们模拟一些数据来演示
data = {
    '持仓价格': [10, 20, 30, 40, 50, 60, 70, 80],
    '持仓量': [100, 200, 300, 400, 500, 600, 700, 800]
}
df = pd.DataFrame(data)

# 自定义价格区间
price_range = [0, 20, 40, 60, 80, 100]

# 根据价格区间计算每个区间的总持仓量
df_grouped = df.groupby(pd.cut(df['持仓价格'], bins=price_range)).sum()

# 重置索引以便更容易处理
df_grouped = df_grouped.reset_index()

# 计算区间的中间值
def calculate_midpoint(interval):
    return (interval.left + interval.right) / 2

# 新增一列“区间中间值”
df_grouped['区间中间值'] = df_grouped['持仓价格'].apply(calculate_midpoint)

print(df_grouped)

# 绘制筹码分布图
fig, ax = plt.subplots(figsize=(10, 6))
ax.bar(df_grouped['区间中间值'], df_grouped['持仓量'], width=20, align='center', color='skyblue')

# 设置图表标题和标签
ax.set_title('筹码分布图')
ax.set_xlabel('持仓价格区间')
ax.set_ylabel('持仓总量')
plt.xticks(rotation=45)

# 显示图形
plt.tight_layout()
plt.show()