当前位置:首页>python>期刊图片复现|Python绘制花瓣图

期刊图片复现|Python绘制花瓣图

  • 2026-08-22 08:49:10
期刊图片复现|Python绘制花瓣图

代码绘制成果展示

论文:Integrating spatial patterns of ecosystem service scarcity into territorial  spatial governance with multiethnic perception perspective
论文原图
仿图
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import matplotlib.pyplot as pltimport matplotlib.patches as patchesimport numpy as np

第二部分

颜色库的设置以及配色方案的选择与提取
# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {    1: ['#E3D596', '#F2EAD0', '#E0E6D9', '#D1DDD3', '#CBE5D6',        '#BFE5D8', '#B5E8DE', '#AEE3EB', '#A5D8F0', '#9BCFF0',        '#92CBE8', '#C1E0E9', '#D2DAEB', '#DCD0EA', '#E7CBE1',        '#ECC3DA', '#F5BCD1', '#FBB5C9', '#F5ABB8'],    60: ['#3e1f00', '#5c2f00', '#7a4000', '#995200', '#b96500',         '#d97a00', '#fa8f00', '#ffa524', '#ffb947', '#ffcc69',         '#ffde8a', '#ffefaa', '#ffffca', '#ffffe8', '#ffffff',         '#ffffe8', '#ffffca', '#ffefaa', '#ffde8a']}SCHEME_ID = 60 #使用的颜色方案current_colors = COLOR_SCHEMES.get(SCHEME_ID, COLOR_SCHEMES[1]) #获取配色方案

第三部分

绘图函数:函数定义与循环启动,计算顶点并绘制单片花瓣
# =========================================================================================# ======================================4.绘图函数=======================================# =========================================================================================def draw_rose_chart(ax, angles, labels, colors, config):    #逐个绘制花瓣    for angle, label, color in zip(angles, labels, colors):        #调用函数获取当前花瓣的顶点坐标集合、圆心极径和圆半径        vertices, center_r, radius = get_teardrop_vertices(            angle, #当前花瓣的角度            config["inner_gap"], #中心留空的大小            config["petal_length"], #花瓣长度            config["width_factor"] #花瓣宽度因子        )

第四部分

绘图函数:计算引导线起点和拐点
        tip_r = center_r + radius #花瓣最外端顶点的极径        p1_x = tip_r * np.cos(angle) #第一段引导线起点的横坐标        p1_y = tip_r * np.sin(angle) #第一段引导线起点的纵坐标        elbow_r = tip_r + config["line_extend"] #引导线转折点的极径        p2_x = elbow_r * np.cos(angle) #引导线转折点的横坐标X        p2_y = elbow_r * np.sin(angle) #引导线转折点的纵坐标Y

第五部分

绘图函数:绘制引导线和文本
        #绘制引导线        ax.plot([p1_x, #起点的X坐标                 p2_x, #转折点的X坐标                 p3_x], #终点的X坐标                [p1_y, #起点的Y坐标                 p2_y, #转折点的Y坐标                 p3_y], #终点的Y坐标                color=color, #颜色                lw=2.0, #线宽                zorder=5)        #引导线添加文本        ax.text(p3_x + text_offset, #x                p3_y, #y                label, #文字内容                ha=ha, #水平对齐方式                va='center', #垂直对齐方式                fontsize=20, #字体大小                color='black', #文本颜色                fontweight='bold') #粗细

第六部分

执行部分:花瓣图几何参数配置
# =========================================================================================# ======================================5.执行部分======================================# =========================================================================================if __name__ == "__main__":    #定义绘图所需的具体配置参数字典    plot_config = {        "inner_gap": 0.8, #图表中心的内部空白区域半径        "petal_length": 6.5, #每个花瓣的基础长度        "width_factor": 0.92, #花瓣的宽度因子        "line_extend": 0.8, #引导线第一段向外延伸的长度        "text_gap": 1.2, #引导线水平段的长度    }

第七部分

执行部分:原始数据设置以及数据处理
    #数据    raw_data = [        ("Lisu", 5.0),    ]    #计算数据项的总个数,用于切分圆周角    N = len(raw_data)    #生成格式化后的标签列表    labels = [f"{item[0]} ({item[1]}%)" for item in raw_data]    #均分360度并计算出每一个花瓣的中心角度,起始位置在正上方,然后顺时针旋转    angles = [np.pi / 2 - i * (2 * np.pi / N) for i in range(N)]

第八部分

执行部分:开始绘图
    # 创建画布    fig, ax = plt.subplots(figsize=(12, 12))    fig.set_facecolor('#FCFBF4')  #画布的背景颜色    ax.set_facecolor('#FCFBF4')  #坐标轴的背景颜色    ax.set_aspect('equal') #设定比例相等    ax.axis('off') #隐藏边框和刻度    #调用绘图函数    draw_rose_chart(ax, angles, labels, current_colors, plot_config)    limit = 12 #坐标轴的显示范围界限值    ax.set_xlim(-limit, limit) #X轴范围    ax.set_ylim(-limit, limit) #Y轴范围    plt.tight_layout() #自动调整布局参数

如何应用到你自己的数据

1.设置配色:

SCHEME_ID = 60 #使用的颜色方案

2.定义绘图所使用的原始数据:

raw_data = [    ("Lisu", 5.0),    ("Han", 7.0),    ("Manchu", 5.9),    ("Mongolian", 4.4),    ("Hui", 4.8),    ("Tibetan", 5.3),    ("Uighur", 5.9),    ("Miao", 5.7),    ("Yi", 5.5),    ("Zhuang", 5.3),    ("Bouyei", 4.9),    ("Dong", 4.5),    ("Yao", 4.7),    ("Bai", 5.2),    ("Tujia", 4.9),    ("Hani", 5.2),    ("Kazakh", 5.0),    ("Dai", 6.2),    ("Li", 4.7)]

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

file_png = fr'scheme_{SCHEME_ID}.png'

推荐

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

获取方式

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

最新文章

随机文章