# scRNAseq可视化

## Python Matplotlib系统教程

{% embed url="<https://www.wolai.com/matplotlib/uecbhR3MHhaZkK55za779h>" %}

## 样本构成分布

### 单层空心饼图

```
// Python

#https://huarc.net/notebook/scatlasvae/analysis_final.html

pie_plot(adata_nogex, 
         items=disease_types, 
         item_str='disease_type', 
         item_color=disease_type_color,
         file_name='figures/S7_condition_percent.pdf')
```

### 双层空心饼图

```
// Python
#https://huarc.net/notebook/scatlasvae/analysis_final.html

# 创建一个空列表，用于存储每个组织类型内细胞亚型的数量
tissue_subpercent = []

# 遍历聚合后的组织类型 meta_tissue_type_aggrs
for j in meta_tissue_type_aggrs:
    # 对每个组织类型 (j)，计算每个细胞类型 (i) 中的细胞数量
    cell_num = [len(adata_nmal.obs[(adata_nmal.obs['meta_tissue_type_aggr'] == j) & 
                                   (adata_nmal.obs['meta_tissue_type'] == i)]) for i in meta_tissue_types]
    # 将计算结果 (每个组织类型下细胞类型的数量) 添加到 tissue_subpercent 列表中
    tissue_subpercent.append(cell_num)

# 将 tissue_subpercent 转换为 NumPy 数组，以便后续操作
tissue_subpercent = np.array(tissue_subpercent)

# 创建一个新的图形和子图，设置图形大小
fig, ax = plt.subplots(figsize=(10, 8))

# 获取外圈饼图的颜色映射
color_map = meta_tissue_type_color.values()

# 获取内圈饼图的颜色映射
inner_color_map = tissue_type_color.values()

# 绘制外圈饼图
ax.pie(tissue_subpercent.sum(axis=1), radius=1,  # 使用 sum(axis=1) 来获取每个组织类型的总细胞数
       colors=color_map,  # 外圈颜色
       autopct='%1.0f%%',  # 百分比格式
       pctdistance=1.2,  # 百分比距离图心的距离
       wedgeprops=dict(width=0.3))  # 设置外圈的宽度

# 绘制内圈饼图，只绘制非零的细胞数量，表示细胞亚型的分布
ax.pie(tissue_subpercent.flatten()[tissue_subpercent.flatten() != 0], radius=0.7,  # 使用半径为 0.7 绘制内圈
       colors=inner_color_map,  # 内圈颜色
       autopct='%1.2f%%',  # 百分比格式，保留两位小数
       pctdistance=1.2,  # 百分比距离图心的距离
       wedgeprops=dict(width=0.3, alpha=0.8))  # 设置内圈的宽度和透明度

# 添加图例，显示外圈和内圈的组织类型和细胞类型
ax.legend(list(meta_tissue_type_color.keys()) + list(tissue_type_color.keys()),  # 外圈和内圈的标签合并
          title="Meta Tissue Types",  # 图例标题
          loc="center left",  # 图例位置
          fontsize="small",  # 图例字体大小
          bbox_to_anchor=(1, 0, 0.5, 1))  # 调整图例位置

# 保存图形为 PDF 文件
fig.savefig('figures/tissue_subpercent.pdf')

# 显示图形
plt.show()

```

### 堆叠柱状图

```
// Python

stacked_bar(adata=adata_circ_nokid[adata_circ_nokid.obs['meta_cell_subset']=='normal_CD8'], 
            percentage=True, xitems=disease_types, xitem_str='disease_type', 
            yitems=cell_subtype_aggrs, yitem_str='meta_cell_subtype', yitem_color=main_type_color, 
            file_name='figures/S7_disease2subtypes_circ.pdf')
```
