
代码绘制成果展示










代码解释


第一部分

# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy.interpolate import make_interp_splinefrom matplotlib.ticker import MultipleLocator

第二部分

# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {1: ['#5a0000', '#e62e1a', '#fedfcc', '#b8d3eb', '#6599cc', '#1f66a0'],}SCHEME_ID = 60 #使用的配色方案colors = COLOR_SCHEMES.get(SCHEME_ID, COLOR_SCHEMES[1]) #获取颜色

第三部分

# =========================================================================================# ======================================3.绘制函数======================================# =========================================================================================def draw_custom_plot(df, save_path=""):# 创建画布fig, ax = plt.subplots(figsize=(8, 8))years = df.index #获取年份数据,x轴components = ['BC', 'NH4+', 'NO3-', 'OM', 'SO42-', 'DUST'] # 定义需要堆叠的数据名称labels = ['BC', r'NH$_4^+$', r'NO$_3^-$', 'OM', r'SO$_4^{2-}$', 'DUST'] #图例名称y_stack = [df[c].values for c in components] #提取数据

第四部分

#绘制折线图ax.plot(years, #xdf['Total'], #ycolor='black', #颜色linewidth=2.0, #宽度label='Deaths', #图例标签zorder=10) #图层顺序#绘制置信区间上界ax.plot(years, #xdf['CI_Upper'], #ycolor='black', #颜色linestyle='--', #样式zorder=10) #图层顺序#绘制置信区间下界ax.plot(years, #xdf['CI_Lower'], #ycolor='black', #颜色zorder=10) #图层顺序

第五部分

#设置刻度参数ax.tick_params(axis='both', #作用于x轴和y轴which='major', #主刻度direction='out', #朝外length=6, #长度width=2, #宽度labelsize=11) #字体大小#设置刻度参数ax.tick_params(axis='both', #作用于x轴和y轴which='minor', #次刻度direction='out', #朝外length=3, #长度width=1.5) #宽度#设置x轴次刻度间隔ax.xaxis.set_minor_locator(MultipleLocator(1))# 设置y轴次刻度间隔ax.yaxis.set_minor_locator(MultipleLocator(5))#设置边框线宽ax.spines['left'].set_linewidth(2)ax.spines['bottom'].set_linewidth(2)#隐藏边框ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)

第六部分

handles, labels_all = ax.get_legend_handles_labels() #获取当前图表的所有图例句柄和标签ax.legend(final_handles, #调整后的句柄final_labels, #调整后的标签frameon=False, #不显示图例边框loc='upper right', #右上角fontsize=11) #字体大小plt.tight_layout() #自动调整子图参数

第七部分

# =========================================================================================# ======================================4.执行部分======================================# =========================================================================================if __name__ == "__main__":INPUT_EXCEL_PATH = r"data.xlsx" #输入文件OUTPUT_DIR = r"堆叠面积图" #输出文件SWITCH_SMOOTH = 0 #是否开启平滑#读取文件raw_df = pd.read_excel(INPUT_EXCEL_PATH)raw_df.set_index('Year', inplace=True) #设置为索引target_df = smooth_df if SWITCH_SMOOTH else raw_df#调用绘图函数进行绘图draw_custom_plot(target_df, save_path=OUTPUT_DIR)

如何应用到你自己的数据

1.设置配色:
SCHEME_ID = 60 #使用的配色方案2.设置堆叠图数据的部分:
components = ['BC', 'NH4+', 'NO3-', 'OM', 'SO42-', 'DUST'] 3.设置原始数据文件的路径:
INPUT_EXCEL_PATH = r"data.xlsx" #输入文件4.设置结果文件的路径:
OUTPUT_DIR = r"堆叠面积图" #输出文件5.设置是否要开启数据平滑处理:
SWITCH_SMOOTH = 0 #是否开启平滑
推荐


获取方式
