当前位置:首页>python>Python绘制高颜值雷达气泡图

Python绘制高颜值雷达气泡图

  • 2026-10-11 07:00:04
Python绘制高颜值雷达气泡图

代码绘制成果展示

雷达气泡图:此图展示了不同区域在多个年份下关键指标的演变情况。图表正中心的文本明确了内部平滑多边形所代表的核心指标,最外围的一圈字母代表了被统计的各个区域。图表正上方设有一条带有数值的垂直刻度轴,结合背景的灰色同心圆网格,用于直观衡量各多边形边缘距离圆心的远近,从而体现具体的产量数值大小。图中的三个平滑的多边形分别代表2020年、2010年和2000年的粮食产量分布形态,清晰展现了各省产量的年代际扩张或收缩趋势;与此同时,在整个图表的指定半径轨道上还规则地分布着三圈与年份颜色相对应的散点气泡,这些气泡精确映射了对应省份在特定年份的农作物种植面积,气泡越大代表面积越广。
结果图
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import matplotlib.pyplot as pltimport numpy as npfrom scipy.interpolate import make_interp_splineimport matplotlib

第二部分

设置颜色库,内置60种高颜值配色方案
# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {    1: ['#77b5fe', '#C79FEF', '#77dd77'],}

第三部分

雷达气泡图绘制函数:进行数据读取、画布创建,添加极坐标底图,设置网格布局,绘制雷达图的圆环、径向线、外圈和文本标签
# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def plot_advanced_forest_chart(df, scheme_id):    num_provinces = len(labels)  #标签数    start_angle_offset = np.pi / 2 + 2 * (2 * np.pi / num_provinces)  #起始偏角    angles = np.linspace(start_angle_offset, 2 * np.pi + start_angle_offset, num_provinces, endpoint=False)  # 生成等距角度    r_outer = 1.0  # 外圈半径    r_inner = 0.3  # 内圈半径    num_concentric_circles = 4  # 同心圆数量    radii = np.linspace(r_inner, r_outer, num_concentric_circles)  # 生成半径数组        x, y = label_radius * np.cos(angle), label_radius * np.sin(angle)  # 标签坐标        angle_deg = np.rad2deg(angle) % 360  # 弧度转角度        # 设置文本旋转角度        if 90 < angle_deg < 270:            ha = 'right'        elif angle_deg == 90 or angle_deg == 270:            ha = 'center'        else:            ha = 'left'        #添加标签文本        ax.text(x,  # x                y,  # y                label,  # 文本                horizontalalignment=ha,  # 水平                verticalalignment='center',  # 垂直                fontsize=10)  # 字号

第四部分

雷达气泡图绘制函数:进行气泡尺寸映射与散点图绘制,设置数据的缩放转换,绘制散点图气泡。
    bubble_radius_2000, bubble_radius_2010, bubble_radius_2020 = 0.5, 0.7, 0.9  #气泡半径    MIN_BUBBLE_SIZE, MAX_BUBBLE_SIZE = 100.0, 300.0  # 气泡缩放极值    x_2010, y_2010 = bubble_radius_2010 * np.cos(angles), bubble_radius_2010 * np.sin(angles)  #2010散点坐标    # 绘制气泡    ax.scatter(x_2010,  #x               y_2010,  #y               s=sizes_2010, # 大小               c=color_2010,  # 颜色               alpha=0.6,  # 透明度               zorder=10)  # 层    x_2020, y_2020 = bubble_radius_2020 * np.cos(angles), bubble_radius_2020 * np.sin(angles)  #2020散点坐标    # 绘制气泡    ax.scatter(x_2020,  #x               y_2020,  #y               s=sizes_2020,  # 大小               c=color_2020,  # 颜色               alpha=0.6,  # 透明度               zorder=10)  # 层

第五部分

雷达气泡图绘制函数:绘制雷达图的平滑多边形以及中心的白色圆形
        ax.fill(smooth_x,  # x                smooth_y,  # y                color=color,  # 颜色                alpha=0.5,  # 透明度                zorder=5)  # 层        #绘制边        ax.plot(smooth_x,  # x                smooth_y,  # y                color=color,  # 颜色                linewidth=linewidth,  # 线宽                zorder=9)  # 层    ax.set_xlim(-1.3, 1.3)  # X范围    ax.set_ylim(-1.3, 1.3)  # Y范围    ax.set_aspect('equal', adjustable='box')  # 固定等距缩放    ax.axis('off')  # 隐藏坐标轴    #创建中心白色圆    white_circle = plt.Circle((0, 0),  # 原点                              r_inner,  # 半径                              color='white',  # 白色                              zorder=15)  # 层    ax.add_artist(white_circle)  # 添加    ax.add_artist(inner_border_rerender)  # 添加到图上

第六部分

雷达气泡图绘制函数:在雷达图的正上方添加一个刻度轴,创建了两种图例(大小和颜色),绘图结果保存。
    scale_angle = np.pi / 2  # 设置刻度条夹角为正上方    ax.plot([axis_x_start, axis_x_end],  #x            [axis_y_start, axis_y_end],  # y            color='black',  # 黑色            linewidth=1.5,  # 线宽            zorder=11)  # 层    ax.add_artist(leg1)  # 添加    #颜色图例    # 句柄    year_handles = [          Patch(facecolor=color_2020, alpha=0.7, label='2020'),        Patch(facecolor=color_2010, alpha=0.7, label='2010'),        Patch(facecolor=color_2000, alpha=0.7, label='2000')    ]    #添加图例    leg2 = ax.legend(handles=year_handles,  # 句柄                     title="Year",  # 标题                     loc='upper left',  # 位置                     bbox_to_anchor=(0.95, 0.5),  # 坐标                     frameon=False,  # 边框                     labelspacing=1.0)  # 行距    ax.add_artist(leg2)  # 添加

第七部分

程序执行部分:包括数据的读取以及绘图设置
# =========================================================================================# ======================================4.执行部分=======================================# =========================================================================================if __name__ == '__main__':    file_path = r'data.xlsx'    df_real = pd.read_excel(file_path)  #读取数据    scheme_id = 1    selected_hex_colors = COLOR_SCHEMES[scheme_id]    print('正在绘制并保存方案:', scheme_id)    plot_advanced_forest_chart(df_real, scheme_id)

如何应用到你自己的数据

1.设置原始数据的保存路径,执行部分:

file_path = r'data.xlsx'

2.读取雷达气泡图表数据,执行部分:

df_area = pd.read_excel(file_path, sheet_name='Sheet1')df_yield = pd.read_excel(file_path, sheet_name='Sheet2')

3.设置是否进行批量绘图,执行部分:

plot_all = True

4.读取绘图数据,雷达气泡图绘图函数部分:

labels = df_yield['Province'].values  # 获取标签

5.设置绘图结果的最终保存地址,雷达气泡图绘图函数部分:

plt.savefig(fr'雷达气泡图{scheme_id}.png', dpi=300, bbox_inches='tight',            bbox_extra_artists=[leg1, leg2])

往期内容

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

注意

公众号中目前包含近300篇代码+数据+参考论文,后续将会持续更新,需要请后台私信我,注意只会分享练习数据、参考论文和代码文件,仅提供有关代码的答疑,不会提供其他答疑服务,代码文件中已经包含了每行代码的完整注释!!!

最新文章

随机文章