# 使用之前获取的 df_result 数据绘图(如果数据不为空)
if len(df_result) > 0: # 如果有数据
# 获取公司名称用于x轴标签
df_plot = df_result.merge( # 关联公司名称
df_stock_basic[['ts_code', 'name']], # 股票代码和名称
on='ts_code', # 以股票代码为键
how='left' # 左连接
)
fig, ax1 = plt.subplots(figsize=(10, 4.5)) # 创建图表
# 绘制营收柱状图
x_pos = range(len(df_plot)) # x轴位置
bars = ax1.bar( # 绘制柱状图
x_pos, # x位置
df_plot['revenue_yi'], # 营收数据(亿元)
color='#00A4E6', # 蓝色
alpha=0.7, # 透明度
label='营业收入' # 图例标签
)
# 在第二个y轴上绘制净利润
ax2 = ax1.twinx() # 创建共享x轴的第二个y轴
ax2.plot( # 绘制折线图
x_pos, # x位置
df_plot['n_income_yi'], # 净利润数据(亿元)
color='#EC232A', # 红色
marker='o', # 圆形标记
linewidth=2, # 线宽
label='净利润' # 图例标签
)
ax1.set_xticks(x_pos) # 设置x轴刻度
ax1.set_xticklabels(df_plot['name'], rotation=25, fontsize=8) # 设置x轴标签
ax1.set_ylabel('营业收入(亿元)', color='#00A4E6') # 设置y轴标签
ax2.set_ylabel('净利润(亿元)', color='#EC232A') # 设置y轴标签
ax1.set_title('长三角IT设备企业财务指标对比(2024Q3)', fontsize=13) # 标题
# 合并两个轴的图例
lines1, labels1 = ax1.get_legend_handles_labels() # 获取柱状图图例
lines2, labels2 = ax2.get_legend_handles_labels() # 获取折线图图例
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left') # 合并图例
ax1.grid(True, alpha=0.2) # 添加网格线
plt.tight_layout() # 自动调整布局
plt.show() # 显示图表