
代码绘制成果展示













代码解释


第一部分

# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom matplotlib.gridspec import GridSpecfrom scipy.stats import spearmanrimport matplotlibmatplotlib.rcParams['pdf.fonttype'] = 42matplotlib.rcParams['ps.fonttype'] = 42plt.rcParams['font.family'] = 'Times New Roman'plt.rcParams['font.weight'] = 'bold'

第二部分

# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {1: ['#A485C6', '#85C698', '#5C92D1'],}

第三部分

# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def plot_scatter_density(df, scheme_id=1):color_list = COLOR_SCHEMES.get(scheme_id, COLOR_SCHEMES[1]) #提取配色方案palette = {group: color_list[i % len(color_list)] for i, group in enumerate(df['Group'].unique())} #分配颜色#创建画布fig = plt.figure(figsize=(9, 8))ax_main = fig.add_subplot(gs[1, 0]) #添加主图轴对象ax_top = fig.add_subplot(gs[0, 0], sharex=ax_main) #顶部子图轴ax_right = fig.add_subplot(gs[1, 1], sharey=ax_main) #右侧子图轴

第四部分

groups = df['Group'].unique()#散点图sns.scatterplot(data=df, #数据x='Ground Surface Temperature', #x轴y='Land Surface Temperature', #y轴hue='Group', #根据分组上色palette=palette, #配色ax=ax_main, #轴edgecolor='white', #散点边缘色alpha=0.9, #透明度s=50, #大小legend=False, #去掉自带图例zorder=2) #层

第五部分

#顶部边缘直方图sns.histplot(data=df, #数据x='Ground Surface Temperature', #X轴hue='Group', #分组绘制palette=palette, #配色ax=ax_top, #轴multiple="stack", #堆叠直方图stat="count", #分布密度common_norm=False, #各分组内部独立进行归一化element="bars", #柱状图alpha=0.5, #透明度edgecolor='grey', #边线色bins=15, #分箱legend=False) #去掉图例

第六部分

ax_main.set_xlabel('Ground Surface Temperature', fontsize=16, fontweight='bold') #x轴标题ax_main.text(0.03, #xy_pos, #ytext_str, #文本transform=ax_main.transAxes, #坐标系fontsize=12, #字体大小fontweight='bold', #加粗color=palette[group], #颜色va='top', #垂直bbox=dict(boxstyle='round,pad=0.2', #圆角矩形facecolor='white', #填充色alpha=0.7, #透明度edgecolor='none')) #边框线颜色y_pos -= 0.15 #更新y坐标

第七部分

ax_top.tick_params(axis='x', #xlabelbottom=False, #不显示标注length=0) #去掉刻度线ax_top.tick_params(axis='y', #y轴length=6, #长width=1.5, #粗细labelsize=11) #字体大小ax_top.set_xlabel('') #去掉标题#设置边框for ax in [ax_main, ax_top, ax_right]:#去掉ax.spines['top'].set_visible(False)ax.spines['right'].set_visible(False)#加粗ax.spines['bottom'].set_linewidth(2.0)ax.spines['left'].set_linewidth(2.0)

第八部分

# =========================================================================================# ======================================4.执行部分=======================================# =========================================================================================if __name__ == '__main__':excel_path = r"data.xlsx" #原始数据df_final = pd.read_excel(excel_path) #读取数据plot_all = Trueif plot_all:for scheme_id in COLOR_SCHEMES.keys():plot_scatter_density(df_final, scheme_id=scheme_id)print('正在绘制方案:', scheme_id)else:scheme_id = 22plot_scatter_density(df_final, scheme_id=scheme_id)print('正在绘制方案:',scheme_id)

如何应用到你自己的数据

1.设置原始数据的保存路径,执行部分:
excel_path = r"data.xlsx" #原始数据2.读取数据分析,执行部分:
r, p_val = spearmanr(sub_df['Ground Surface Temperature'], sub_df['Land Surface Temperature']) #分析3.设置绘图结果的保存地址,绘图函数部分:
plt.savefig(fr"{scheme_id}.png", dpi=300, bbox_inches='tight')
推荐


获取方式
