<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請入駐

      一文搞定!火山圖在意不在形!

      0
      分享至


      # ======================
      # 火山圖多風(fēng)格整合代碼
      # 包含6種不同風(fēng)格的火山圖實(shí)現(xiàn)
      # ======================
      
      # 1. 環(huán)境設(shè)置與包加載 ----
      rm(list = ls())
      options(stringsAsFactors = F)
      
      # 安裝缺失的包
      if (!requireNamespace("ggplot2", quietly = TRUE)) install.packages("ggplot2")
      if (!requireNamespace("ggrepel", quietly = TRUE)) install.packages("ggrepel")
      if (!requireNamespace("dplyr", quietly = TRUE)) install.packages("dplyr")
      if (!requireNamespace("export", quietly = TRUE)) install.packages("export")
      if (!requireNamespace("ggforce", quietly = TRUE)) install.packages("ggforce")
      if (!requireNamespace("plotly", quietly = TRUE)) install.packages("plotly")
      if (!requireNamespace("htmlwidgets", quietly = TRUE)) install.packages("htmlwidgets")
      if (!requireNamespace("gridExtra", quietly = TRUE)) install.packages("gridExtra")
      
      # 加載包
      library(ggplot2)
      library(ggrepel)
      library(dplyr)
      library(export)
      library(ggforce)
      library(plotly)
      library(htmlwidgets)
      library(gridExtra)
      
      # 2. 創(chuàng)建模擬數(shù)據(jù)集 ----
      set.seed(123)
      n_genes <- 2000
      dataset <- data.frame(
        gene = paste0("GENE", 1:n_genes),
        logFC = c(rnorm(n_genes*0.8, 0, 0.5), 
                  rnorm(n_genes*0.1, 2, 0.5), 
                  rnorm(n_genes*0.1, -2, 0.5)),
        P.Value = c(runif(n_genes*0.8, 0.01, 1), 
                    runif(n_genes*0.2, 0.0001, 0.05))
      )
      
      # 添加變化類型和標(biāo)簽
      dataset <- dataset %>%
        mutate(
          change = case_when(
            P.Value < 0.05 & logFC >= 1 ~ "Up",
            P.Value < 0.05 & logFC <= -1 ~ "Down",
            TRUE ~ "Stable"
          ),
          label = ifelse(change != "Stable", gene, "")
        )
      
      # 3. 基礎(chǔ)火山圖 ----
      basic_volcano <- ggplot(dataset, aes(logFC, -log10(P.Value))) +
        geom_point(aes(color = change), size = 2, alpha = 0.7) +
        scale_color_manual(values = c("Down" = "blue", "Stable" = "gray60", "Up" = "red")) +
        geom_hline(yintercept = -log10(0.05), linetype = "dashed", color = "gray30") +
        geom_vline(xintercept = c(-1, 1), linetype = "dashed", color = "gray30") +
        labs(title = "Basic Volcano Plot",
             x = "log2(Fold Change)",
             y = "-log10(p-value)",
             color = "Expression") +
        theme_bw() +
        theme(
          plot.title = element_text(hjust = 0.5, size = 14),
          legend.position = "top"
        ) +
        geom_text_repel(
          data = dataset %>% filter(change != "Stable") %>% 
            slice_min(P.Value, n = 10),
          aes(label = label),
          size = 3,
          max.overlaps = 20
        )
      
      # 4. 現(xiàn)代簡約風(fēng)格 ----
      modern_volcano <- ggplot(dataset, aes(logFC, -log10(P.Value))) +
        geom_point(aes(fill = change, size = abs(logFC)), 
                   shape = 21, color = "white", stroke = 0.3, alpha = 0.8) +
        scale_fill_manual(values = c("Down" = "#4E79A7", "Stable" = "gray80", "Up" = "#E15759")) +
        scale_size_continuous(range = c(1, 5), guide = "none") +
        geom_hline(yintercept = -log10(0.05), linetype = "dashed", color = "gray40") +
        geom_vline(xintercept = c(-1, 1), linetype = "dashed", color = "gray40") +
        labs(title = "Modern Volcano Plot",
             x = "log2(Fold Change)",
             y = "-log10(p-value)",
             fill = "Expression") +
        theme_minimal() +
        theme(
          panel.grid.minor = element_blank(),
          panel.grid.major = element_line(color = "gray90"),
          plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
          legend.position = "bottom"
        ) +
        ggrepel::geom_text_repel(
          data = dataset %>% filter(P.Value < 0.001 & abs(logFC) > 1.5),
          aes(label = label),
          size = 3.5,
          box.padding = 0.3,
          point.padding = 0.1,
          segment.color = "grey50"
        )
      
      # 5. 學(xué)術(shù)黑白風(fēng)格 ----
      academic_volcano <- ggplot(dataset, aes(logFC, -log10(P.Value))) +
        geom_point(aes(shape = change), size = 2.5, alpha = 0.7, fill = "black") +
        scale_shape_manual(values = c("Down" = 25, "Stable" = 21, "Up" = 24)) +
        geom_hline(yintercept = -log10(0.05), linetype = "dashed") +
        geom_vline(xintercept = c(-1, 1), linetype = "dashed") +
        labs(title = "Academic Volcano Plot",
             x = "log2(Fold Change)",
             y = "-log10(p-value)",
             shape = "Expression") +
        theme_classic() +
        theme(
          plot.title = element_text(hjust = 0.5, size = 14),
          legend.position = "right",
          axis.line = element_line(color = "black"),
          axis.ticks = element_line(color = "black")
        ) +
        annotate("text", x = -2.5, y = -log10(0.05)+0.3, 
                 label = "p = 0.05", size = 3) +
        annotate("text", x = 1.8, y = max(-log10(dataset$P.Value))-0.5, 
                 label = "Up-regulated", size = 4, fontface = "italic") +
        annotate("text", x = -1.8, y = max(-log10(dataset$P.Value))-0.5, 
                 label = "Down-regulated", size = 4, fontface = "italic")
      
      # 6. 漸變火山圖 ----
      gradient_volcano <- ggplot(dataset, aes(logFC, -log10(P.Value))) +
        geom_point(aes(color = -log10(P.Value), size = abs(logFC)*0.8 + 1), 
                   alpha = 0.8) +
        scale_color_gradientn(
          colours = c("#313695", "#4575B4", "#74ADD1", "#ABD9E9", "#E0F3F8", 
                      "#FFFFBF", "#FEE090", "#FDAE61", "#F46D43", "#D73027", "#A50026"),
          name = "-log10(p-value)",
          limits = c(0, max(-log10(dataset$P.Value))),
          breaks = c(1, 2, 3, 4)
        ) +
        geom_hline(yintercept = -log10(0.05), linetype = "dashed", color = "gray30") +
        geom_vline(xintercept = c(-1, 1), linetype = "dashed", color = "gray30") +
        labs(title = "Gradient Volcano Plot",
             x = "log2(Fold Change)",
             y = "-log10(p-value)") +
        theme_bw() +
        theme(
          plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
          legend.position = "right",
          panel.grid = element_line(color = "gray95")
        ) +
        ggrepel::geom_text_repel(
          data = dataset %>% filter(-log10(P.Value) > 3 & abs(logFC) > 1.5),
          aes(label = label),
          size = 3,
          box.padding = 0.4,
          segment.color = "grey40"
        )
      
      # 7. 傾斜火山圖(45度視角) ----
      tilted_volcano <- ggplot(dataset, aes(logFC, -log10(P.Value))) +
        geom_point(aes(fill = change), 
                   shape = 21, color = "white", size = 3, alpha = 0.7) +
        scale_fill_manual(values = c("Down" = "#1F77B4", "Stable" = "gray80", "Up" = "#FF7F0E")) +
        labs(title = "Tilted Volcano Plot (45° Perspective)",
             x = "log2(Fold Change)",
             y = "-log10(p-value)",
             fill = "Expression") +
        theme_minimal() +
        theme(
          plot.title = element_text(hjust = 0.5, size = 14, margin = margin(b = 15)),
          legend.position = "bottom"
        ) +
        # 應(yīng)用45度視角變換
        coord_trans(
          x = ggforce::trans_reverser("identity"),
          y = "identity"
        ) +
        # 添加對角線參考線
        geom_abline(slope = 1, intercept = 0, linetype = "dashed", alpha = 0.3, color = "gray40") +
        geom_abline(slope = -1, intercept = 0, linetype = "dashed", alpha = 0.3, color = "gray40") +
        # 添加閾值線
        geom_hline(yintercept = -log10(0.05), linetype = "dotted", alpha = 0.5) +
        geom_vline(xintercept = c(-1, 1), linetype = "dotted", alpha = 0.5) +
        # 添加象限標(biāo)注
        annotate("text", x = -3, y = 5, label = "Low FC\nHigh Sig", size = 3.5, color = "gray30") +
        annotate("text", x = 3, y = 5, label = "High FC\nHigh Sig", size = 3.5, color = "gray30") +
        annotate("text", x = -3, y = 0.5, label = "Low FC\nLow Sig", size = 3.5, color = "gray30") +
        annotate("text", x = 3, y = 0.5, label = "High FC\nLow Sig", size = 3.5, color = "gray30")
      
      # 8. 3D火山圖(交互式) ----
      # 添加第三維度數(shù)據(jù)(模擬表達(dá)量)
      dataset$Expression <- rnorm(nrow(dataset), mean = 10, sd = 3) + abs(dataset$logFC)*2
      
      # 創(chuàng)建顏色映射
      color_map <- c("Up" = "#FF0000", "Down" = "#0000FF", "Stable" = "#CCCCCC")
      dataset$color <- color_map[dataset$change]
      
      # 創(chuàng)建3D火山圖
      volcano3d <- plot_ly(
        data = dataset,
        x = ~logFC,
        y = ~-log10(P.Value),
        z = ~Expression,
        type = "scatter3d",
        mode = "markers",
        marker = list(
          size = ~-log10(P.Value)*0.8 + 3,
          color = ~color,
          opacity = 0.7,
          line = list(width = 0)
        ),
        text = ~paste(
          "Gene: ", gene,
          " logFC: ", round(logFC, 3),
          " p-value: ", format.pval(P.Value, digits = 2),
          " Expression: ", round(Expression, 1)
        ),
        hoverinfo = "text"
      ) %>%
        layout(
          title = list(text = "3D Volcano Plot", y = 0.95),
          scene = list(
            xaxis = list(title = "log2(Fold Change)"),
            yaxis = list(title = "-log10(p-value)"),
            zaxis = list(title = "Expression Level"),
            camera = list(
              eye = list(x = 1.8, y = 1.8, z = 0.8)  # 調(diào)整視角
            )
          ),
          margin = list(l = 0, r = 0, b = 0, t = 40),
          showlegend = FALSE
        ) %>%
        add_annotations(
          x = 0.05,
          y = 0.95,
          xref = "paper",
          yref = "paper",
          text = "Color Legend: Red: Up-regulated Blue: Down-regulated",
          showarrow = FALSE,
          font = list(size = 12)
        )
      
      # 9. 保存所有圖形 ----
      # 保存2D圖形
      graph2png(basic_volcano, "basic_volcano.png", width = 9, height = 7)
      graph2png(modern_volcano, "modern_volcano.png", width = 9, height = 7)
      graph2png(academic_volcano, "academic_volcano.png", width = 9, height = 7)
      graph2png(gradient_volcano, "gradient_volcano.png", width = 10, height = 8)
      graph2png(tilted_volcano, "tilted_volcano.png", width = 10, height = 8)
      
      # 保存3D交互圖
      htmlwidgets::saveWidget(
        widget = volcano3d,
        file = "3D_volcano.html",
        selfcontained = TRUE
      )
      
      # 10. 并排顯示2D圖形 ----
      grid_volcano <- gridExtra::grid.arrange(
        basic_volcano, 
        modern_volcano,
        academic_volcano,
        gradient_volcano,
        tilted_volcano,
        ncol = 3,
        top = "Comparative Volcano Plots"
      )
      
      # 保存組合圖
      graph2png(grid_volcano, "combined_volcano.png", width = 18, height = 12)
      
      # 11. 在R中查看所有圖形 ----
      # 顯示2D圖形
      print(basic_volcano)
      print(modern_volcano)
      print(academic_volcano)
      print(gradient_volcano)
      print(tilted_volcano)
      
      # 顯示3D圖形(在RStudio中查看)
      # volcano3d

      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關(guān)推薦
      熱點(diǎn)推薦
      中央首提解決地方財(cái)政困難,釋放什么信號(hào)?

      中央首提解決地方財(cái)政困難,釋放什么信號(hào)?

      第一財(cái)經(jīng)資訊
      2025-12-12 15:13:17
      超預(yù)期!降息150個(gè)基點(diǎn)

      超預(yù)期!降息150個(gè)基點(diǎn)

      中國基金報(bào)
      2025-12-11 20:56:02
      MacBook Pro首次采用OLED:Mini LED時(shí)代將終結(jié)

      MacBook Pro首次采用OLED:Mini LED時(shí)代將終結(jié)

      快科技
      2025-12-12 16:42:47
      廣西一中職學(xué)校7.7萬采購22套服裝引質(zhì)疑,招標(biāo)負(fù)責(zé)人稱采購合規(guī)

      廣西一中職學(xué)校7.7萬采購22套服裝引質(zhì)疑,招標(biāo)負(fù)責(zé)人稱采購合規(guī)

      澎湃新聞
      2025-12-12 13:08:26
      24年上海女子安樂死,從清醒到離開僅5分鐘,父親哭訴:不想她走

      24年上海女子安樂死,從清醒到離開僅5分鐘,父親哭訴:不想她走

      卷史
      2025-09-06 16:07:00
      烏克蘭最美體操冠軍,放棄國籍做中國媳婦,37歲生二胎仍似少女

      烏克蘭最美體操冠軍,放棄國籍做中國媳婦,37歲生二胎仍似少女

      林雁飛
      2025-12-11 16:20:56
      亞洲第1!16歲中國新星身價(jià)22.5萬歐,與歐洲頂級(jí)新星齊名

      亞洲第1!16歲中國新星身價(jià)22.5萬歐,與歐洲頂級(jí)新星齊名

      小金體壇大視野
      2025-12-12 17:13:32
      A股,尾盤突發(fā)利好信號(hào),下周,或?qū)⒂瓉硇乱惠啞芭J小毙星椋?>
    </a>
        <h3>
      <a href=夜深愛雜談
      2025-12-12 19:28:40
      太炸裂了!印度首富小兒媳和大兒子被曝驚天丑聞,倆人牽手摸腰很自然

      太炸裂了!印度首富小兒媳和大兒子被曝驚天丑聞,倆人牽手摸腰很自然

      小魚愛魚樂
      2025-12-12 08:39:41
      隨著王楚欽4-1勝大勒布倫,晉級(jí)半決賽!男單4強(qiáng)國乒提前鎖定2席

      隨著王楚欽4-1勝大勒布倫,晉級(jí)半決賽!男單4強(qiáng)國乒提前鎖定2席

      球場沒跑道
      2025-12-12 13:53:27
      華南師范大學(xué)林勇教授,在廣州逝世

      華南師范大學(xué)林勇教授,在廣州逝世

      南方都市報(bào)
      2025-12-12 13:09:11
      學(xué)歷貶值太狠!月薪3000,珠海一工廠招現(xiàn)場作業(yè)崗要本科以上…

      學(xué)歷貶值太狠!月薪3000,珠海一工廠招現(xiàn)場作業(yè)崗要本科以上…

      火山詩話
      2025-12-12 05:51:17
      男子因拒絕在公司年會(huì)上表演,被領(lǐng)導(dǎo)以曠工為由開除,法院:公司行為違法,判賠18.5萬元

      男子因拒絕在公司年會(huì)上表演,被領(lǐng)導(dǎo)以曠工為由開除,法院:公司行為違法,判賠18.5萬元

      觀威海
      2025-12-12 14:14:02
      昔日女團(tuán)門面買下40億大樓!遭網(wǎng)酸“靠擦|邊致富”!

      昔日女團(tuán)門面買下40億大樓!遭網(wǎng)酸“靠擦|邊致富”!

      一盅情懷
      2025-12-12 18:07:44
      54歲于和偉演毛主席,這一次,他讓唐國強(qiáng)和整個(gè)娛樂圈沉默了!

      54歲于和偉演毛主席,這一次,他讓唐國強(qiáng)和整個(gè)娛樂圈沉默了!

      溫讀史
      2025-08-08 23:40:18
      中國“固態(tài)電池第一股”要來了

      中國“固態(tài)電池第一股”要來了

      界面新聞
      2025-12-12 11:48:19
      蘇聯(lián)攻克柏林后,斯大林沒有選黃金,用3000列火車運(yùn)走德國鐵疙瘩

      蘇聯(lián)攻克柏林后,斯大林沒有選黃金,用3000列火車運(yùn)走德國鐵疙瘩

      古書記史
      2025-12-11 22:22:41
      他是廣東知名主持人,32歲娶了女老師,如今女兒接班主持為他爭光

      他是廣東知名主持人,32歲娶了女老師,如今女兒接班主持為他爭光

      阿訊說天下
      2025-12-11 18:46:43
      男人注意:女人若有過很多男人,多半有這5個(gè)表現(xiàn),別傻傻看不清

      男人注意:女人若有過很多男人,多半有這5個(gè)表現(xiàn),別傻傻看不清

      伊人河畔
      2025-12-04 11:27:19
      山東臨沂一高三男生墜亡,官方介入

      山東臨沂一高三男生墜亡,官方介入

      深圳晚報(bào)
      2025-12-11 23:18:58
      2025-12-12 20:44:49
      芒果師兄 incentive-icons
      芒果師兄
      一起學(xué)習(xí),共同成長,讓生信助力科研。
      453文章數(shù) 65關(guān)注度
      往期回顧 全部

      科技要聞

      凌晨突發(fā)!GPT-5.2上線,首批實(shí)測感受來了

      頭條要聞

      10人聚餐后9人離開 最后1人拒付餐費(fèi):付錢就是冤大頭

      頭條要聞

      10人聚餐后9人離開 最后1人拒付餐費(fèi):付錢就是冤大頭

      體育要聞

      15輪2分,他們怎么成了英超最爛球隊(duì)?

      娛樂要聞

      上海這一夜,33歲陳麗君秒了32歲吉娜?

      財(cái)經(jīng)要聞

      鎂信健康闖關(guān)港交所:被指竊取商業(yè)秘密

      汽車要聞

      表面風(fēng)平浪靜 內(nèi)里翻天覆地!試駕銀河星艦7 EM-i

      態(tài)度原創(chuàng)

      健康
      本地
      藝術(shù)
      數(shù)碼
      軍事航空

      甲狀腺結(jié)節(jié)到這個(gè)程度,該穿刺了!

      本地新聞

      云游安徽|阜陽三朝風(fēng)骨,傳承千年墨香

      藝術(shù)要聞

      嶺南畫派畫雪

      數(shù)碼要聞

      PConline 2025 智臻科技獎(jiǎng)|年度卓越設(shè)計(jì):WIKO Hi MateBook 14

      軍事要聞

      澤連斯基:烏領(lǐng)土問題應(yīng)由烏人民決定

      無障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 福利一区二区不卡国产| 欧美顶级metart祼体全部自慰| 乌鲁木齐市| 色哟哟精品| 亚洲日韩av无码一区二区三区人| 玛多县| 99久久婷婷国产综合精品青草漫画| 无码人妻中文字幕| 强d乱码中文字幕熟女1000部 | 成人精品区| 天堂网在线观看| 消息称老熟妇乱视频一区二区| 人妻夜夜爽天天爽一区| 大化| 欧美a级视频| 国产综合无码一区二区色蜜蜜| 好了av四色综合无码| 中文字幕人妻精品| 成人深爱网| 免费A片国产毛无码A片| 亚洲自拍制服| 91精品国产福利尤物免费| 亚洲中文字幕无码久久2017| 久久久久亚洲精品成人网小说| 惠水县| 成人3p在线观看| 国产精品人妻无码久久久豆腐| 男女性高爱潮免费网站| 国产精品香港三级国产av| 久久精品国产亚洲AⅤ无码| 日韩乱码人妻无码中文字幕| 手机在线国产精品| 亚洲中文字幕在线无码一区二区| 内地自拍三级在线观看| 亚洲红杏AV无码专区首页| 日本不卡视频| 亚洲一区二区经典在线播放| 免费黄色大全一区二区三区| 99国产精品永久免费视频| 国产精品露脸视频观看| 男女性高爱潮免费网站|