文章浮現之單細胞VDJ的柱狀圖

應各位老師的需求復現一篇文章的中的某個圖

在這里插入圖片描述

具體復現圖5的整個思路圖,這里沒有原始數據,所以我使用虛擬生產的metadata進行畫圖

在這里插入圖片描述
不廢話直接上代碼,先上python的代碼的結果圖

在這里插入圖片描述

import matplotlib.pyplot as plt
import numpy as np# 數據(這里使用示例數據,您需要替換為實際數據)
data = {'IGHD':  [20, 15, 25, 20, 15, 25, 10, 5, 10, 5, 2, 5, 2, 1, 5],'IGHM':  [65, 70, 45, 65, 70, 45, 75, 80, 65, 70, 55, 25, 10, 5, 10],'IGHA1': [5, 5, 10, 5, 5, 10, 5, 5, 10, 10, 15, 30, 30, 35, 25],'IGHA2': [2, 2, 5, 2, 2, 5, 2, 2, 5, 5, 10, 10, 10, 10, 15],'IGHG1': [3, 3, 5, 3, 3, 5, 3, 3, 5, 5, 8, 15, 30, 30, 25],'IGHG2': [2, 2, 3, 2, 2, 3, 2, 2, 3, 2, 5, 10, 10, 10, 10],'IGHG3': [2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 3, 3, 5, 5, 5],'IGHG4': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 5]
}# 設置顏色
colors = ['#ADD8E6', "#4169E1", '#90EE90', '#32CD32', '#FFC0CB', '#FF0000', '#800000', '#FFA500']# 創建圖表
fig, ax = plt.subplots(figsize=(12, 6))# 繪制堆疊柱狀圖
bottom = np.zeros(15)
for cell_type, percentage in data.items():ax.bar(range(15), percentage, bottom=bottom, width=0.8, label=cell_type, color=colors[list(data.keys()).index(cell_type)])bottom += percentage# 設置x軸標簽
x_labels = ['HD', 'EBnor', 'EBpro'] * 5
ax.set_xticks(range(15))
ax.set_xticklabels(x_labels, rotation=45)# 添加組標簽
group_labels = ['Btr', 'Bn', 'Bm', 'AtM', 'ASC']
for i, label in enumerate(group_labels):ax.text(i*3 + 1, 105, label, ha='center', fontweight='bold')# 設置y軸
ax.set_ylim(0, 110)
ax.set_ylabel('Fraction of cells (%)')# 添加圖例
ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')# 調整布局
plt.tight_layout()# 顯示圖表
plt.show()

貌似R畫的更好
在這里插入圖片描述

library(ggplot2)
library(dplyr)
library(tidyr)# 創建示例數據
data <- data.frame(Group = rep(c("Btr", "Bn", "Bm", "AtM", "ASC"), each = 3),Condition = rep(c("HD", "EBnor", "EBpro"), 5),IGHD = c(20,15,25, 20,15,25, 10,5,10, 5,2,5, 2,1,5),IGHM = c(65,70,45, 65,70,45, 75,80,65, 70,55,25, 10,5,10),IGHA1 = c(5,5,10, 5,5,10, 5,5,10, 10,15,30, 30,35,25),IGHA2 = c(2,2,5, 2,2,5, 2,2,5, 5,10,10, 10,10,15),IGHG1 = c(3,3,5, 3,3,5, 3,3,5, 5,8,15, 30,30,25),IGHG2 = c(2,2,3, 2,2,3, 2,2,3, 2,5,10, 10,10,10),IGHG3 = c(2,2,1, 2,2,1, 2,2,1, 2,3,3, 5,5,5),IGHG4 = c(1,1,1, 1,1,1, 1,1,1, 1,2,2, 3,4,5)
)# 轉換數據格式并歸一化
data_long <- data %>%pivot_longer(cols = IGHD:IGHG4, names_to = "CellType", values_to = "Percentage") %>%group_by(Group, Condition) %>%mutate(Percentage = Percentage / sum(Percentage) * 100) %>%ungroup()# 設置細胞類型的順序
cell_type_order <- c("IGHG4", "IGHG3", "IGHG2", "IGHG1", "IGHA2", "IGHA1", "IGHM", "IGHD")
data_long$CellType <- factor(data_long$CellType, levels = cell_type_order)# 創建圖表
ggplot(data_long, aes(x = Condition, y = Percentage, fill = CellType)) +geom_bar(stat = "identity", position = "stack") +facet_grid(~ Group, scales = "free_x", space = "free_x") +scale_fill_manual(values = c("#FFA500", "#8B4513", "#FF0000", "#FF69B4", "#32CD32", "#90EE90", "#4169E1", "#ADD8E6")) +labs(y = "Fraction of cells (%)", x = NULL) +theme_minimal() +theme(axis.text.x = element_text(angle = 45, hjust = 1),panel.grid.major.x = element_blank(),panel.grid.minor.x = element_blank(),strip.background = element_blank(),strip.text = element_text(size = 12, face = "bold")) +scale_y_continuous(expand = c(0, 0), limits = c(0, 100))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37275.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37275.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37275.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

架構師篇-8、運用事件風暴進行業務領域建

如何成為優秀架構師&#xff1f; 需要有一定的技術積累&#xff0c;但是核心是懂業務。 具備一定的方法&#xff0c;并且有很強的業務理解能力。 技術架構師&#xff1a;形成技術方案&#xff0c;做的更多的是底層的平臺&#xff0c;提供工具。 業務架構師&#xff1a;解決方…

兩數之和你會,三數之和你也會嗎?o_O

前言 多少人夢想開始的地方&#xff0c;兩數之和。 但是今天要聊的不是入門第一題&#xff0c;也沒有面試官會考這一題吧…不會真有吧&#xff1f; 咳咳不管有沒有&#xff0c;今天的豬腳是它的兄弟&#xff0c;三數之和&#xff0c;作為雙指針經典題目之一&#xff0c;也是常…

Vue3中Element Plus組件庫el-eialog彈框中的input無法獲取表單焦點的解決辦法

以下是vue.js官網給出的示例 <script setup> import { ref, onMounted } from vue// 聲明一個 ref 來存放該元素的引用 // 必須和模板里的 ref 同名 const input ref(null)onMounted(() > {input.value.focus() }) </script><template><input ref&qu…

如何在Vue3項目中使用Pinia進行狀態管理

**第一步&#xff1a;安裝Pinia依賴** 要在Vue3項目中使用Pinia進行狀態管理&#xff0c;首先需要安裝Pinia依賴。可以使用以下npm命令進行安裝&#xff1a; bash npm install pinia 或者如果你使用的是yarn&#xff0c;可以使用以下命令&#xff1a; bash yarn add pinia *…

Tomcat的安裝和虛擬主機和context配置

一、 安裝Tomcat 注意&#xff1a;安裝 tomcat 前必須先部署JDK 1. 安裝JDK 方法1&#xff1a;Oracle JDK 的二進制文件安裝 [rootnode5 ~]# mkdir /data [rootnode5 ~]# cd /data/ [rootnode5 data]# rz[rootnode5 data]# ls jdk-8u291-linux-x64.tar.gz [rootnode5 data]…

C++:std::function的libc++實現

std::function是個有點神奇的模板&#xff0c;無論是普通函數、函數對象、lambda表達式還是std::bind的返回值&#xff08;以上統稱為可調用對象&#xff08;Callable&#xff09;&#xff09;&#xff0c;無論可調用對象的實際類型是什么&#xff0c;無論是有狀態的還是無狀態…

【C++】string基本用法(常用接口介紹)

文章目錄 一、string介紹二、string類對象的創建&#xff08;常見構造&#xff09;三、string類對象的容量操作1.size()和length()2.capacity()3.empty()4.clear()5.reserve()6.resize() 四、string類對象的遍歷與訪問1.operator[ ]2.正向迭代器begin()和end()3.反向迭代器rbeg…

QTableView與QSqlQueryModel的簡單使用

測試&#xff1a; 這里有一個sqlite數據庫 存儲了10萬多條數據&#xff0c;col1是1,col2是2. 使用QSqlQueryModel和QTableView來顯示這些數據&#xff0c;也非常非常流暢。 QString aFile QString::fromLocal8Bit("E:/桌面/3.db");if (aFile.isEmpty())return;//打…

關于考摩托車駕照

剛通過了摩托車駕照考試&#xff0c;說兩句。 1、在哪兒考試就要搞清楚當地的規定&#xff0c;不要以為全國要求都一樣。 2、首先是報駕校。雖然至少有些地方允許自學后&#xff08;不報駕校&#xff09;考試&#xff0c;但報駕校聽聽教練說的&#xff0c;還是能提高通過率&a…

計算機圖形學筆記----矩陣

矩陣和標量的運算 ,則 矩陣與矩陣相乘 的矩陣A&#xff0c;的矩陣B。兩矩陣&#xff0c;結果為的矩陣&#xff0c;第一個矩陣的列數必須和第二個矩陣的行數相同&#xff0c;否則不能相乘 &#xff0c;中的每個元素等于A的第i行所對應的矢量和B的第j列所對應的矢量進行矢量點…

Django靚號管理系統:實現用戶列表功能

在本篇博文中,我們將介紹如何在Django靚號管理系統中實現用戶列表功能。這個功能允許管理員查看系統中所有用戶的基本信息。我們將逐步講解如何設置URL路由、創建視圖函數以及設計模板。 1. 設置URL路由 首先,我們需要在??urls.py??文件中添加一個新的URL路徑,以便訪問…

云計算【第一階段(22)】Linux的進程和計劃任務管理

目錄 一、查看進程 1.1、程序和進程的關系 1.2、查看進程 1.2.1、靜態查看進程信息ps ?編輯 1.2.1.1、實驗 1.2.2、動態查看進程信息top 1.2.2.1、實驗 1.2.2.2、top 命令全屏操作界面快捷鍵 1.2.3、pgrep根據特定條件查詢進程pid信息 1.2.4、pstree命令以樹形結構列出…

CentOS系統日志入門

日志清單 系統的引導日志:/var/log/boot.log核心啟動日志:/var/log/dmesg系統報錯日志:/var/log/messages郵件系統日志:/var/log/maillogFTP系統日志:/var/log/xferlog安全信息和系統登錄與網絡連接的信息:/var/log/secureNews日志:/var/log/spoolerRPM軟件包:/var/log/rpmpkg…

Android 常用ADB命令

文章目錄 Android 常用ADB命令概述adb 的工作原理命令adb命令shell命令 使用adb服務器操作設備操作應用文件操作activity操作日志操作 Android 常用ADB命令 概述 Android 調試橋 (adb) 是一種功能多樣的命令行工具&#xff0c;可讓您與設備進行通信。adb 命令可用于執行各種設…

Avue框架學習

Avue框架學習 我們的項目使用的框架是 Avue 在我看來這個框架最大的特點是可以基于JSON配置頁面上的From,Table以及各種各樣的輸入框等,不需要懂前端就可以很快上手,前提是需要多查一下文檔 開發環境搭建 由于我本地的環境全是用docker來搭建的,所以我依然選擇用docker搭建我…

萬字淺析視頻搜索系統中的多模態能力建設

萬字淺析視頻搜索系統中的多模態能力建設 FesianXu 20240331 at Tencent WeChat search team 前言 視頻搜索是天然的富媒體檢索場景&#xff0c;視覺信息占據了視頻的一大部分信息量&#xff0c;在視頻搜索系統中引入多模態能力&#xff0c;對于提高整個系統的能力天花板至關重…

機器人控制系列教程之任務空間運動控制器搭建(1)

任務空間運動控制簡介 任務空間運動控制—位置被指定給控制器作為末端執行器的姿態。然后&#xff0c;控制器驅動機器人的關節配置到使末端執行器移動到指定姿態的值。這有時被稱為操作空間控制。 任務空間運動模型表示機器人在閉環任務空間位置控制下的運動&#xff0c;可使用…

python基礎:高級數據類型:集合

1、集合的定義 集合是一個無序且無重復元素的列表。其定義與數學定義一致。其無序和不重復和字典特征類似&#xff0c;但是無“值”。 2、集合的創建 集合一般由列表創建&#xff0c;在初始化列表時保證其元素唯一性&#xff0c;即為集合。 創建方法&#xff1a;x set(list…

汽車電子工程師入門系列——AUTOSAR通信服務框架(下)

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 屏蔽力是信息過載時代一個人的特殊競爭力,任何消耗你的人和事,多看一眼都是你的不對。非必要不費力證明自己,無利益不試圖說服別人,是精神上的節…

GitHub每周最火火火項目(6.24-6.30)

項目名稱&#xff1a;dortania / OpenCore - Legacy - Patcher 項目介紹&#xff1a;該項目旨在讓用戶體驗如同以前一樣的macOS。它可能提供了一種方式來解決在某些情況下&#xff0c;用戶無法正常使用或升級macOS的問題。通過使用OpenCore - Legacy - Patcher&#xff0c;用戶…