Matplotlib绘图出现空白图 如何绘制Open/High/Low/Close四个图表
问题根因
原代码仅完成了画布初始化、原始数据解包操作,没有调用任何绘图接口将Open、High、Low、Close四个价格指标的数据渲染到坐标轴上,因此执行plt.show()时只会输出空白画布。
修复后可运行代码
以下代码会生成2行2列的子图网格,分别展示四个指标的价格走势:
import matplotlib.pyplot as plt # 原始金融数据保留 Levels = ['Open','High','Low','Close'] financial_data = (('3 October 2016',774.25,776.065002,769.5,772.559998), ('4',776.030029,778.710022,772.890015,776.429993), ('5',779.309998,782.070007,775.650024,776.469971), ('6',779,780.47998,775.539978,776.859985), ('7',779.659973,779.659973,770.75,775.080017),) Days, Open, High, Low, Close= zip(*financial_data) Position= list(range(len(financial_data))) # 创建2行2列的子图布局 fig, axs = plt.subplots(2, 2, figsize=(10, 8)) # 绘制开盘价走势 axs[0,0].plot(Position, Open, color='#1f77b4', marker='o') axs[0,0].set_title('Open') axs[0,0].set_xticks(Position, Days) # 绘制最高价走势 axs[0,1].plot(Position, High, color='#ff7f0e', marker='o') axs[0,1].set_title('High') axs[0,1].set_xticks(Position, Days) # 绘制最低价走势 axs[1,0].plot(Position, Low, color='#2ca02c', marker='o') axs[1,0].set_title('Low') axs[1,0].set_xticks(Position, Days) # 绘制收盘价走势 axs[1,1].plot(Position, Close, color='#d62728', marker='o') axs[1,1].set_title('Close') axs[1,1].set_xticks(Position, Days) # 自动调整排版避免文字重叠 plt.tight_layout() plt.show()
关键修改说明
- 替换原有的单画布初始化逻辑,创建2行2列共4个独立子图,分别承载四个价格指标的折线,避免多序列混在同一张图中辨识度低
- 对每个子图调用
plot()方法,传入横轴坐标位置、对应价格序列完成绘图,添加点标记方便读取单日数值 - 为每个子图配置对应指标标题,将横轴刻度替换为实际日期标签
- 新增
plt.tight_layout()自动调整子图间距,避免标题、刻度文字互相遮挡
内容的提问来源于stack exchange,提问作者Çağın
相关产品推荐
相关产品推荐

