通过tushare获取数据,使用上述数据绘制浦发银行股票收盘价和成交量的综合时间序列的南丁格尔玫瑰图
时间: 2023-06-19 14:10:58 浏览: 188
首先需要安装tushare和matplotlib库。可以使用以下命令进行安装:
```
pip install tushare matplotlib
```
然后使用以下代码获取浦发银行的股票数据:
```python
import tushare as ts
# 设置tushare token,需要在tushare官网申请
ts.set_token('your_token_here')
# 初始化pro接口
pro = ts.pro_api()
# 获取浦发银行股票数据
df = pro.daily(ts_code='600000.SH', start_date='20200101', end_date='20201231')
```
接着,我们需要对数据进行处理,计算每个月的平均股票收盘价和成交量:
```python
import pandas as pd
# 将交易日期转换为datetime类型
df['trade_date'] = pd.to_datetime(df['trade_date'], format='%Y%m%d')
# 按月份进行分组,计算平均收盘价和成交量
df_monthly = df.groupby(pd.Grouper(key='trade_date', freq='M')).agg({'close': 'mean', 'vol': 'mean'}).reset_index()
# 将月份转换为字符串类型
df_monthly['trade_date'] = df_monthly['trade_date'].dt.strftime('%Y-%m')
```
最后,我们可以使用matplotlib库绘制南丁格尔玫瑰图:
```python
import matplotlib.pyplot as plt
import numpy as np
# 创建绘图窗口
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw=dict(projection='polar'))
# 计算每个月份的收盘价和成交量所占比例
close_ratio = df_monthly['close'] / df_monthly['close'].sum()
vol_ratio = df_monthly['vol'] / df_monthly['vol'].sum()
# 计算每个月份的起始角度和极径
theta = 2 * np.pi * np.arange(len(df_monthly)) / len(df_monthly)
radii = close_ratio + vol_ratio
# 绘制南丁格尔玫瑰图
bars = ax.bar(theta, radii, width=2 * np.pi / len(df_monthly), bottom=0.0)
# 设置每个月份的颜色和标签
month_labels = df_monthly['trade_date'].tolist()
month_colors = plt.cm.viridis(np.linspace(0, 1, len(df_monthly)))
for i, bar in enumerate(bars):
bar.set_facecolor(month_colors[i])
bar.set_label(month_labels[i])
# 添加图例
ax.legend(loc='upper right')
# 显示图形
plt.show()
```
运行以上代码即可得到浦发银行股票收盘价和成交量的综合时间序列南丁格尔玫瑰图。