我们拿到的A股历史趋势数据为:
日期 收盘 开盘 高 低 交易量 涨跌幅
2024/2/1 2,735.12 2,773.42 2,804.77 2,666.58 35.29B -1.92%
2024/1/1 2,788.55 2,972.77 2,976.27 2,724.16 692.52B -6.27%
2023/12/1 2,974.93 3,027.35 3,038.98 2,882.02 605.86B -1.81%
2023/11/1 3,029.67 3,038.18 3,089.77 3,009.12 649.43B 0.36%
2023/10/1 3,018.77 3,100.00 3,109.99 2,923.51
想绘制一个历史变化的趋势图,简单使用python脚本来实现:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.ticker import FuncFormatter
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为SimHei显示中文
plt.rcParams['axes.unicode_minus'] = False # 解决负号'-'显示为方块的问题
# 加载数据
data = pd.read_excel('./A股.xlsx') # 请将路径替换为实际文件的路径
# 数据预处理
data['日期'] = pd.to_datetime(data['日期']) # 转换日期列为日期格式
data['交易量数值'] = data['交易量'].str.replace(',', '').str.replace('B', '').astype(float) * 1e9 # 转换交易量为数值类型
# 定义十亿格式化函数
def billion_formatter(x, pos):
return '%1.1fB' % (x * 1e-9)
# 绘制图表
fig, ax1 = plt.subplots(figsize=(14, 8))
# 价格数据
ax1.set_xlabel('日期')
ax1.set_ylabel('价格', color='tab:blue')
ax1.plot(data['日期'], data['收盘'], label='收盘价', color='tab:blue')
ax1.plot(data['日期'], data['开盘'], label='开盘价', color='tab:orange', alpha=0.6)
ax1.plot(data['日期'], data['高'], label='最高价', color='tab:green', alpha=0.3)
ax1.plot(data['日期'], data['低'], label='最低价', color='tab:red', alpha=0.3)
ax1.tick_params(axis='y', labelcolor='tab:blue')
ax1.legend(loc='upper left')
# 设置x轴的主要定位器和格式化程序
ax1.xaxis.set_major_locator(mdates.MonthLocator())
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
# 添加第二个y轴来绘制交易量
ax2 = ax1.twinx()
ax2.set_ylabel('交易量', color='tab:purple')
ax2.bar(data['日期'], data['交易量数值'], width=20, alpha=0.2, color='tab:purple')
ax2.tick_params(axis='y', labelcolor='tab:purple')
ax2.yaxis.set_major_formatter(FuncFormatter(billion_formatter))
plt.xticks(rotation=45)
plt.title('A股历史趋势分析')
plt.tight_layout() # 调整布局,防止重叠
plt.show()