
代码绘制成果展示












代码解释


第一部分

# =========================================================================================# ====================================== 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, #X9.8, #Yf'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'].valuesrice_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
推荐


获取方式
