Python实现两个CSV文件绘图合并并添加次Y轴
合并主次Y轴绘图的解决方案
要将两个CSV文件的变量合并到同一绘图(C在主Y轴,rew_binary在次Y轴),你需要复用同一个matplotlib轴对象,避免pandas自动创建独立绘图。修改后的代码如下:
from pathlib import Path import pandas as pd import matplotlib.pyplot as plt files = Path('./mA1_2022_03_23_csplit').glob('*.csv') recode = pd.read_csv('./mA1_2022_03_23_recode.csv', index_col=0) for file in files: df = pd.read_csv(file, index_col=0) # 创建画布与主Y轴对象 fig, ax1 = plt.subplots() # 绘制主Y轴的C曲线 ax1.plot(df['time_ms'], df['C'], color='tab:blue') ax1.set_xlabel('time_ms') ax1.set_ylabel('C', color='tab:blue') ax1.tick_params(axis='y', labelcolor='tab:blue') ax1.set_title(file.name) # 创建共享X轴的次Y轴 ax2 = ax1.twinx() # 绘制次Y轴的rew_binary柱状图 ax2.bar(recode['time_ms'], recode['rew_binary'], color='tab:orange', alpha=0.5) ax2.set_ylabel('rew_binary', color='tab:orange') ax2.tick_params(axis='y', labelcolor='tab:orange') # 自动调整布局,防止标签重叠 fig.tight_layout() plt.show()
关键说明
- 放弃
df.plot()和recode.plot()的独立绘图模式,基于同一个ax1轴对象扩展绘图 ax1.twinx()生成的次轴与主轴共享X轴,保证两个变量的时间轴完全对齐- 为两个轴设置不同颜色,直观区分主次Y轴的变量
- 给柱状图添加
alpha=0.5的半透明效果,避免遮挡主Y轴的曲线内容
内容的提问来源于stack exchange,提问作者ChaseBandz
相关产品推荐
相关产品推荐

