主頁 > 移動端開發 > 洗掉默認圖例但添加自定義圖例tidyverse?

洗掉默認圖例但添加自定義圖例tidyverse?

2022-05-10 03:31:07 移動端開發

我真的希望你有時間在這里幫忙。所以,我試圖做一個我想洗掉默認圖例的情節,只是因為它沒有任何意義,因為它基于 0-1 的大小(我嘗試使用 legend.position = "無”,但后來我想添加一個根據我的情節制作的新圖例,這樣我就有三個選項:小點(log fold < 2)、藍點(p < 0.001 和 log fold < 2) ,和紅點(p < 0.001 和 log fold > 2)根據我的圖表。但是我無法洗掉默認圖例并仍然添加新圖例?!

提前非常感謝!

洗掉默認圖例但添加自定義圖例 tidyverse?

下面是我繪制圖表的代碼..

maximum_y <- my_data_clean_aug %>% 
  pull(log_fold_change) %>% 
  max() %>% 
  round()   0.5

#Determining the numbers of sequences per virus strain (Origin) and setting a threshold.
threshold <- my_data_clean_aug %>% 
  count(Origin) %>% 
  filter(n > 50) %>% 
  count() %>% 
  pull()

#Pooling all groups of vira with less than 50 hits into HHV or Others
my_data_clean_aug_pooling <- my_data_clean_aug %>% 
  mutate(Origin = as.factor(Origin)) %>% 
  mutate(newID = fct_lump(Origin, threshold)) %>% 
  mutate(value = case_when(log_fold_change <= 2 ~ 0,
                           0.001 < p & log_fold_change >= 2 ~ 0,
                           0.001 >= p & log_fold_change >= 2 ~ 1))

pointsofinterest <- my_data_clean_aug_pooling %>% 
  filter(0.001 >= p & log_fold_change >= 2)

pointswithpsig <- my_data_clean_aug_pooling %>% 
  filter(0.001 >= p & log_fold_change < 2)

my_data_clean_aug_pooling %>% 
  ggplot(aes(x = Peptide, 
             y = log_fold_change))  
  facet_grid(.~newID,
             scales = "free_x",
             space = "free")  
  geom_point(aes_string(size = "value"))  
  geom_point(data = pointsofinterest, 
             color = "red")  
  geom_point(data = pointswithpsig,
             color = "blue")  
  geom_hline(yintercept = 2, 
             linetype = "dashed")  
  scale_y_continuous(limits = c(0, 
                                maximum_y),
                     breaks = seq(0, 
                                  maximum_y, 
                                  2))  
  theme(plot.title = element_text(size = 10, 
                                  hjust = 0.5,
                                  face = "bold"),
        axis.text.x = element_text(size = 5,
                                   angle = 90, 
                                   vjust = 0.5,
                                   hjust = 1),
        strip.background = element_rect(fill = "white"),
        panel.border = element_rect(colour = "black", 
                                    fill = NA),
        axis.title.x = element_text(size = 8),
        axis.title.y = element_text(size = 8),
        plot.background = element_rect(fill = "transparent", 
                                       color = NA))  
  labs(x = "ID", 
       y = "Log-fold change",
       title = "Log-fold change vs sequence")  
  scale_size(range = c(0.1,
                       1))
dput(head(my_data_clean_aug_pooling, 30))
structure(list(sample = c("BC372", "BC372", "BC372", 
"BC372", "BC372", "BC372", "BC372", "BC372", "BC372", "BC372", 
"BC372", "BC372", "BC372", "BC372", "BC372", "BC372", "BC372", 
"BC372", "BC372", "BC372", "BC372", "BC372", "BC372", "BC372", 
"BC372", "BC372", "BC372", "BC372", "BC372", "BC372"), log_fold_change = c(0.878480955476892, 
0.0254158993036971, 0.169690374849339, 1.29365346670481, 0.950207146498172, 
0.121582483746693, 0.29591552217522, 0.0493694708020405, 0.253196235065184, 
0.511413610788978, 0.92777679529061, 0.633288220541381, 0.852617925189971, 
0.245947820840199, 0.284143920808481, 0.54421651055215, 0.998865269852439, 
0.468714806763581, 0.704136952532169, 0.334881411284732, 1.09989649348867, 
0.44520995356178, 0.559300342753859, 0.198650181166743, 0.947415942094208, 
0.0365273151532468, 0.129416762542994, 3.85327690599736, 0.912242173799338, 
0.980016944958404), p = c(0.455815003793973, 0.9710277325421, 
0.929138758106761, 0.106508575848957, 0.325186030411862, 0.933801784951691, 
0.929138758106761, 0.96549305958931, 0.929138758106761, 0.776892782297412, 
0.325186030411862, 0.635666815285353, 0.382558882746048, 0.929138758106761, 
0.929138758106761, 0.722931599232632, 0.325186030411862, 0.815874297477519, 
0.529382980477629, 0.929138758106761, 0.238130758200615, 0.827129935665299, 
0.711217028978768, 0.929138758106761, 0.325186030411862, 0.96549305958931, 
0.933280410383701, 2.15547277536054e-13, 0.349668295725122, 0.325186030411862
), HLA = c("A0201", "A0201", "A0201", "A0201", "A0201", "A0201", 
"A0201", "A0201", "A0201", "A0201", "A0201", "A0201", "A0201", 
"A0201", "A0201", "A0201", "A0201", "A0301", "A0301", "A0301", 
"A2402", "A2402", "A2402", "A2402", "B0702", "B0702", "B0702", 
"B0801", "B0801", "B0801"), Origin = structure(c(5L, 1L, 5L, 
9L, 19L, 5L, 7L, 18L, 1L, 3L, 5L, 14L, 14L, 9L, 5L, 3L, 5L, 5L, 
5L, 3L, 3L, 2L, 14L, 5L, 3L, 15L, 5L, 5L, 3L, 3L), .Label = c("B19", 
"BKPyV", "CMV", "Covid-19", "EBV", "FLU-A", "HAdV-C", "hCoV", 
"HHV-1", "HHV-2", "HHV-6B", "HIV-1", "HMPV", "HPV", "JCPyV", 
"NWV", "unknown", "VACV", "VZV"), class = "factor"), Peptide = c("v16", 
"a47", "a49", "a50", "a51", "a52", "a53", "a55", "a57", "a58", 
"a59", "a60", "a61", "a64", "a65", "a66", "a67", "v18", "v25", 
"a68", "a74", "a77", "a80", "a81", "v14", "a87", "a89", "v17", 
"v22", "a90"), newID = structure(c(3L, 5L, 3L, 5L, 
5L, 3L, 5L, 5L, 5L, 1L, 3L, 5L, 5L, 5L, 3L, 1L, 3L, 3L, 3L, 1L, 
1L, 5L, 5L, 3L, 1L, 5L, 3L, 3L, 1L, 1L), .Label = c("CMV", "Covid-19", 
"EBV", "hCoV", "Other"), class = "factor"), value = c(0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 1, 0, 0)), row.names = c(NA, -30L), class = c("tbl_df", 
"tbl", "data.frame"))

uj5u.com熱心網友回復:

這是一種方法。

與其將資料過濾成 3 個不同的資料集,不如創建一個新列,其值對應于多個條件。我已經呼叫了新變數Colour,但任何有意義的名稱都可以。這些值是通過一個陳述句分配的case_when,默認值為"black". 然后以比例手動給出顏色。

要洗掉value圖例,它現在使用引數guide

我還定義了一個 custom theme,以使問題代碼更清晰。

theme_LasseVoss <- function(){ 
  theme_minimal() % replace%    
    theme(
      plot.title = element_text(size = 10, 
                                hjust = 0.5,
                                face = "bold"),
      axis.text.x = element_text(size = 5,
                                 angle = 90, 
                                 vjust = 0.5,
                                 hjust = 1),
      strip.background = element_rect(fill = "white"),
      panel.border = element_rect(colour = "black", 
                                  fill = NA),
      axis.title.x = element_text(size = 8),
      axis.title.y = element_text(size = 8),
      plot.background = element_rect(fill = "transparent", 
                                     color = NA)
    )
}

maximum_y <- ceiling(max(my_data_clean_aug_pooling$log_fold_change))

my_data_clean_aug_pooling %>% 
  mutate(Colour = case_when(
    0.001 >= p & log_fold_change >= 2 ~ "interest",
    0.001 >= p & log_fold_change < 2 ~ "psig",
    TRUE ~ "other"
  )) %>% 
  ggplot(aes(x = Peptide, y = log_fold_change))  
  geom_point(aes(size = value, colour = Colour))  
  geom_hline(yintercept = 2, linetype = "dashed")  
  #
  scale_color_manual(
    name = "Colour",
    values = c(other = "black", interest = "red", psig = "blue")
  )  
  scale_size(
    range = c(0.1, 1), 
    guide = "none"
  )  
  scale_y_continuous(
    limits = c(0, maximum_y),
    breaks = seq(0, maximum_y, 2)
  )  
  #
  labs(x = "ID", y = "Log-fold change",
       title = "Log-fold change vs sequence")  
  facet_grid(.~newID, scales = "free_x", space = "free")  
  theme_LasseVoss()

uj5u.com熱心網友回復:

通常,如果您避免單獨繪制資料的子集,則更容易使圖例正常作業,因此獲得繪圖的一種方法是添加一個額外的列,指示它是哪種型別的點。請注意,示例資料不包括重要點。然后,您可以將代碼更改為:

my_data_clean_aug_pooling <- my_data_clean_aug_pooling %>% 
  mutate(group = factor(ifelse(0.001 >= p, ifelse(log_fold_change >= 2, "Interesting", "Significant"), "Boring"), 
                           levels=c("Boring", "Interesting", "Significant")))

levels(my_data_clean_aug_pooling$group)
#[1] "Boring"      "Interesting" "Significant"


my_data_clean_aug_pooling %>% 
  ggplot(aes(x = Peptide, 
             y = log_fold_change, colour=group, size=group)
         )  
  facet_grid(.~newID,
             scales = "free_x",
             space = "free")  
  geom_point()  
  geom_hline(yintercept = 2, 
             linetype = "dashed")  
  scale_y_continuous(limits = c(0, 
                                maximum_y),
                     breaks = seq(0, 
                                  maximum_y, 
                                  2))  
  theme(plot.title = element_text(size = 10, 
                                  hjust = 0.5,
                                  face = "bold"),
        axis.text.x = element_text(size = 5,
                                   angle = 90, 
                                   vjust = 0.5,
                                   hjust = 1),
        strip.background = element_rect(fill = "white"),
        panel.border = element_rect(colour = "black", 
                                    fill = NA),
        axis.title.x = element_text(size = 8),
        axis.title.y = element_text(size = 8),
        plot.background = element_rect(fill = "transparent", 
                                       color = NA))  
  labs(x = "ID", 
       y = "Log-fold change",
       title = "Log-fold change vs sequence")  
  scale_colour_manual(values=c("Boring"="black","Interesting"="red","Significant"="blue"))  
  scale_size_manual(values=c("Boring"=0.1, "Interesting"=5, "Significant"=5))

這使: 洗掉默認圖例但添加自定義圖例 tidyverse?

(我可能沒有為黑點選擇最好的名字!)

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471564.html

標籤:r ggplot2 tidyverse

上一篇:如何在X軸上顯示具有多個值的ggplot?

下一篇:ggplot2中的陰影區域在同一圖中具有多個時間序列

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more