当前位置: 首页 > wzjs >正文

钓鱼网站图片工厂管理培训课程

钓鱼网站图片,工厂管理培训课程,抖音代运营方案怎么写,生成静态网站前几天后台有同学私信说想要美化下scanpy绘制的UMAP图,给了篇单细胞文章中的UMAP截图,我们写了一个函数,用于美化scanpy的UMAP图,思路还是比较简单,基本上全部是由deeepseek帮忙实现,能让你的UMAP图拥有&am…

      前几天后台有同学私信说想要美化下scanpy绘制的UMAP图,给了篇单细胞文章中的UMAP截图,我们写了一个函数,用于美化scanpy的UMAP图,思路还是比较简单,基本上全部是由deeepseek帮忙实现,能让你的UMAP图拥有:


✓ 细胞亚群轮廓线
✓ 智能标签定位
✓ 科研风坐标轴
✓ 自适应比例标注

图片

核心美化功能解析

功能1:核密度轮廓线

kde = KernelDensity(bandwidth=0.5)kde.fit(coordinates)plt.contour(xx, yy, Z, levels=[peak*0.1]) 
  • 原理:通过核密度估计寻找细胞聚集区

  • 优势:比 convex hull 更贴合真实分布

功能2:智能标签

ax.text(x, y, cell_type, bbox=dict(facecolor='white', alpha=0.9))
  • 自动计算亚群中位数坐标

  • 白色半透明背景增强对比度

  • 圆角边框提升美观度

功能3:科研风坐标轴​​​​​​​

ax.arrow(x_min, y_min, dx, 0)  # X轴箭头ax.text(x_center, y_min-offset, 'UMAP1')  # 动态标签
  • 自动计算箭头长度比例

  • 自适应图像长宽比

  • 标签防遮挡设计

完整函数封装​​​​​​​

import numpy as npimport pandas as pdimport scanpy as scimport matplotlib.pyplot as pltfrom sklearn.neighbors import KernelDensitydef enhance_umap(adata, color='celltype', figsize=(6,6)):    fig, ax = plt.subplots(figsize=figsize)    sc.pl.umap(        adata,        color=color,        legend_loc=None,        frameon=False,        size=15,        ax=ax,        add_outline=True,        show=False    )
    for cell_type in adata.obs[color].unique():        # 获取对应细胞类型的UMAP坐标        mask = adata.obs[color] == cell_type        x = adata.obsm["X_umap"][mask, 0]        y = adata.obsm["X_umap"][mask, 1]
        x_min, x_max = x.min() - 0.5, x.max() + 0.5        y_min, y_max = y.min() - 0.5, y.max() + 0.5        xx, yy = np.mgrid[x_min:x_max:100j, y_min:y_max:100j]
        xy_train = np.vstack([x, y]).T        xy_test = np.vstack([xx.ravel(), yy.ravel()]).T
        # 核密度估计        kde = KernelDensity(bandwidth=0.5, metric='euclidean')        kde.fit(xy_train)
        # 密度        Z = np.exp(kde.score_samples(xy_test))        Z = Z.reshape(xx.shape)
        # 绘制轮廓        plt.contour(            xx, yy, Z,             levels=[Z.max() * 0.1],             colors='gray',             linestyles='--',              linewidths=1.2,              alpha=0.75         )
    cell_type_counts = adata.obs[color].value_counts(normalize=True) * 100    for cell_type, percentage in cell_type_counts.items():        mask = adata.obs[color] == cell_type        x = np.median(adata.obsm["X_umap"][mask, 0])        y = np.median(adata.obsm["X_umap"][mask, 1])        ax.text(            # x, y, f"{cell_type} ({percentage:.1f}%)",            x, y, f"{cell_type}",            fontsize=10,             ha="center",             color="black",            bbox=dict(                facecolor='white',         # 添加白色背景                edgecolor='none',                 alpha=0.65,                boxstyle="round,pad=0.4"   # 添加圆角            )          )    ax = plt.gca()    ax.set_xlabel('UMAP1', fontsize=10)    ax.set_ylabel('UMAP2', fontsize=10)    # 获取坐标轴数据范围    x_min, x_max = ax.get_xlim()    y_min, y_max = ax.get_ylim()    # 动态计算箭头参数(基于数据范围和图像比例)    x_range = x_max - x_min    y_range = y_max - y_min    aspect_ratio = (fig.get_size_inches()[0] / fig.get_size_inches()[1]) * (y_range / x_range)  # 校正宽高比    # 箭头长度(数据范围的10%)    dx = x_range * 0.1 * aspect_ratio    dy = y_range * 0.1 * aspect_ratio  # 根据实际显示比例调整Y轴长度    # 箭头头部参数(与箭头长度成比例)    head_width = dy * 0.1    head_length = dx * 0.1    # 绘制X轴箭头    ax.arrow(        x_min, y_min,        dx, 0,        head_width=head_width,        head_length=head_length,        fc='black',        ec='black'    )    # 绘制Y轴箭头    ax.arrow(        x_min, y_min,        0, dy,        head_width=head_width,        head_length=head_length,        fc='black',        ec='black'    )    # 计算标签位置(箭头中点+微调偏移)    label_offset = dx * 0.15  # 偏移量为箭头长度的15%    ax.text(        x_min + dx/2,         y_min - label_offset,  # 向下偏移        'UMAP1',        ha='center',         va='top',         fontsize=10    )    ax.text(        x_min - label_offset,         y_min + dy/2,        'UMAP2',        rotation=90,        ha='right',         va='center',        fontsize=10    )

图片


文章转载自:

http://6HA1yeQg.znknj.cn
http://oTlgKHZu.znknj.cn
http://Sv9tcb5z.znknj.cn
http://1jIpsEnz.znknj.cn
http://wYxJtj1M.znknj.cn
http://TkdUmolN.znknj.cn
http://aDP7H1lR.znknj.cn
http://04K7cTOH.znknj.cn
http://fsqIHaXc.znknj.cn
http://hqWHRS9H.znknj.cn
http://vUbM0eMZ.znknj.cn
http://RbC1SDqN.znknj.cn
http://bl5DMGtC.znknj.cn
http://XBQX92tr.znknj.cn
http://EAzEmq6L.znknj.cn
http://HBmPkP8i.znknj.cn
http://w4eT3Wpq.znknj.cn
http://UdKKk4Gy.znknj.cn
http://IGjhmjHv.znknj.cn
http://82nJQrq2.znknj.cn
http://gY2Yxr4v.znknj.cn
http://MraYTY9a.znknj.cn
http://fC8LForQ.znknj.cn
http://cMab0AyH.znknj.cn
http://xtJsmC8h.znknj.cn
http://iedGDJOf.znknj.cn
http://a6EI0amZ.znknj.cn
http://2iiefWyn.znknj.cn
http://1bAoEZjI.znknj.cn
http://UgwHCxdD.znknj.cn
http://www.dtcms.com/wzjs/729723.html

相关文章:

  • 87网站建设工作室全国房产信息查询网
  • 无锡梅村网站建设营销策划与运营方案
  • 设计网站的管理系统有域名之后怎么自己做网站
  • 怎样开物流网站微商网站推广怎么做
  • 网站建设 陕icp哪个跨境电商网站做的最好
  • 吧网站做软件的软件柳州搜索引擎营销平台
  • 长沙臻钬建站活动方案阿里云做网站教程
  • 暖色调 网站做电影网站不放国内主机
  • 延吉市建设局网站给女友做的网站 源码
  • 公司网站毕业设计论文dedecms网站地图模板怎么
  • 山西山西省建设厅网站建设银行反钓鱼网站
  • 长沙哪里有做网站的公司安徽建设厅网站首页
  • 海南房产网站建设wordpress xampp 教程
  • 做网站包域名包服务器多少钱手机怎么自己做网页
  • 票务网站策划书怎么给网站做广告
  • 网络科技有限公司网站建设策划书苏州高新区网站建设
  • 金华公司做网站wordpress签到用户中心插件
  • 济南正规网站制作品牌网站建设论文 优帮云
  • 常用的网站有哪些上海网站制作是什么
  • 石家庄手机网站建设公司小程序设计用什么软件
  • 建设六马路小学官方网站企业网是什么类型
  • 网站服务器自己搭建网站网站服务器
  • 整个网站全是图片做的wordpress主题是用什么开发出来的
  • 网站建设主题怎么定德州网络推广
  • 个人网站备案地址选择wordpress 批量 发布
  • 做网站泉州超炫网站页面
  • 高网站建设樟木头网站推广
  • 做网站的技术门槛高吗审计实务网站建设论文
  • 网站建设心得wordpress广告插件汉化
  • 汽车网站开发深圳工作服制作