当前位置:首页>python>期刊图片复现|python绘制四象限密度散点图

期刊图片复现|python绘制四象限密度散点图

  • 2026-09-26 15:03:17
期刊图片复现|python绘制四象限密度散点图

代码绘制成果展示

论文:Data-driven strategies to improve nitrogen  use efficiency of rice farming in South Asia
论文原图
图中每一个散点代表一个样本,散点之上等高线KDE区域反映了数据点的分布密度。图表内部被两条相交的黑色粗实线划分为四个象限,两条线分别代表x、y轴的均值。左上角为低投入-高产出,右上角为高投入-高产出,左下角为低投入-低产出,而右下角的高投入-低产出,左下角区域被进行高亮填充,作为警告区域,数值标注为该区域样本数占总样本的比例。
仿图
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import pandas as pdimport matplotlib.pyplot as plt

第二部分

颜色库设置以及配色方案的选择与提取
# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {    1: {'cmap': 'viridis', 'scatter': 'silver', 'warn_bg': '#F5C2C1', 'warn_text': '#7D222A'},}scheme_id = 35  #要使用的配色方案scheme = COLOR_SCHEMES.get(scheme_id, COLOR_SCHEMES[1])  #提取配色方案

第三部分

绘图函数:画布设置与网格线绘制
# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def plot_density_map(x_data, y_data, percentages, x_mean, y_mean):    #画布    fig, ax = plt.subplots(figsize=(5.5, 5), dpi=150)    #网格线    ax.grid(True,  #开启            linestyle='-',  #样式            color='lightgray',  #颜色            alpha=0.5,  #透明度            zorder=0)  #层

第四部分

绘图函数:绘制四象限分割线与背景高亮
    #绘制垂直于X轴并穿过X平均值的黑色分隔线    ax.axvline(x=x_mean, color='black', linewidth=1.5, zorder=3)    #绘制平行于X轴并穿过Y平均值的黑色分隔线    ax.axhline(y=y_mean, color='black', linewidth=1.5, zorder=3)

第五部分

绘图函数:添加各象限文本标注
    #添加文本    ax.text(-18,  #X            9.8,  #Y            f'Low-input ({percentages["TL"]}%)',  #文本            va='top',  #垂直            ha='left')  #水平    ax.text(-18, 9.2, 'High-output' va='top', ha='left')    ax.text(297, 9.8, f'High-input ({percentages["TR"]}%)', va='top', ha='right')    ax.text(297, 9.2, 'High-output' va='top', ha='right')    ax.text(-18, 0.8, f'Low-input ({percentages["BL"]}%)' va='bottom', ha='left')    ax.text(-18, 0.2, 'Low-output' va='bottom', ha='left')    ax.text(297, 0.8, f'High-input ({percentages["BR"]}%)' va='bottom', ha='right')    ax.text(297, 0.2, 'Low-output' va='bottom', ha='right')

第六部分

绘图函数:坐标轴设置、边框设置、绘图结果保存
    ax.set_xlim(-20, 300)  #X范围    ax.set_ylim(0, 10)  #Y范围    ax.set_xticks([0, 100, 200, 300])  #X轴刻度位置    ax.set_yticks([0, 2, 4, 6, 8, 10])  #Y轴刻度位置    ax.set_xlabel('Nitrogen application rate (kg ha$^{-1}$)', fontdict={'size': 14})  #X轴标题    ax.set_ylabel('Rice yield (t ha$^{-1}$)', fontdict={'size': 14})  #Y轴标题    ax.set_title('(b)Andhra Pradesh', loc='left', fontdict={'size': 16}, pad=10)  #主标题

第七部分

执行部分
# =========================================================================================# ======================================4.执行部分=======================================# =========================================================================================if __name__ == '__main__':    df = pd.read_excel(r'data.xlsx')  #原始数据路径    #读取数据    nitrogen_rate = df['Nitrogen_application_rate'].values    rice_yield = df['Rice_yield'].values    #绘图    plot_density_map(nitrogen_rate, rice_yield, percentages, x_mean, y_mean)

如何应用到你自己的数据

1.设置配色方案:

scheme_id = 35  #要使用的配色方案

2.设置绘图结果的保存地址:

plt.savefig(fr'density_map{scheme_id}.png', dpi=300, bbox_inches='tight')

3.设置原始数据的保存地址:

df = pd.read_excel(r'data.xlsx')  #原始数据路径

4.提取对应数据:

nitrogen_rate = df['Nitrogen_application_rate'].values

推荐

期刊图片复现|Python绘制二维偏依赖PDP图
期刊复现|python绘制基于SHAP分析和GAM模型拟合的单特征依赖图
期刊图片复现|python绘制带有渐变颜色shap特征重要性组合图(条形图+蜂巢图)
期刊复现|用Python绘制SHAP特征重要性总览图、依赖图、双特征交互效应SHAP图,解锁XGBoost模型的终极奥秘
期刊图片复现|Python绘制shap重要性蜂巢图+单特征依赖图+交互效应强度气泡图+交互效应依赖图(回归+二分类+分类)

获取方式

公众号中的所有所有的免费代码都已经下架了,都并入到付费部分里了,付费合集代码和数据的购买通道已经开通,全部合集100元,后续将会持续更新,决定购买请后台私信我,注意只会分享练习数据和代码文件,不会提供答疑服务,代码文件中已经包含了每行代码的完整注释,购买前请确保真的需要!!!

最新文章

随机文章