網站首頁 編程語言 正文
即便小仙同學決定學習R語言來提升自己作圖的“逼格”的時候,心中還有有些疑慮的(嘿嘿,我這么懶,可不愿意做無用功了?)。仔細想了想,貌似又找到了兩個學習R的理由。
一是R可以幫助我們避免重復勞動,實現“一勞永逸”的終極夢想。盡管非常不想承認這一事實,在科研的過程中,小仙同學制造出了大量“無效”的數據(sign…),但也不得不“絞盡腦汁”、“竭盡全力”地進行花式分析,試圖找出合理的解釋。這時候用Excel或者Origin作圖的劣勢就顯現出來了,每換一種分析方法或者是數據,我們都需要經過“插入圖表”、“調整顏色”、“調整間距”等等繁雜的工序畫出一張可以拿去“面圣”的圖。小仙同學一想到這些就感覺“累覺不愛”了。
二是R可以自動生成比較貌美的圖。不知道大家有沒有這樣的感受,自己辛辛苦苦畫了半天、調整的半天的圖會得到真實卻很殘忍的評價“很丑”(這是小仙同學心中永遠的痛)。即使本小仙自以為眼光獨特、品味高雅,費勁嘗試“高級”的色系,但搭配出來總是那么不盡人意(實測網紅晚晚帶火的“莫蘭迪色”不適用于科研繪圖)。顏色的搭配、飽和度和透明度的調整沒有想象中那么容易。折騰了半天,天生就愛不服氣的本小仙,最后決定還是把專業的事交給專業的人做啦(偷偷告訴你,據說有科學家專門研究paper插圖的配色,所以自己畫的圖沒有那么貌美的時候也不要“妄自菲薄”啦)。
好了,叨叨這么多,終于要開始進入正題啦。一開始用R繪圖的時候,小仙同學其實是非常痛苦的,因為沒有編程基礎,又懟了好幾年瓶瓶罐罐,看到一行行代碼,腦子里飄過的全是“&%¥#@¥$”。尤其是當你有實驗要做、報告要寫、作業要交的時候,平心靜氣地坐下來踏踏實實學習真的太難了(有人說小仙同學那么忙是因為效率低,好像真有些道理,我這真是“唉”,有苦說不出)。
后來本小仙的學習策略就非常簡單,用到啥就去搜啥,我對數據結構、語法結構一點都不感興趣,能讓我用最短的時間內畫出我想要的圖,就是最好的方法。即使這樣,小仙同學還是費了一些功夫。因為網上的一些教程,很多都是從別處復制粘貼過來的,本身就不完整。另外一個原因,某些大神覺得自己的教程已經足夠通俗易懂了,有些大家都知道的基礎知識根本不需要講(小仙同學不服,有基礎的同學不用看教程也可以自己摸索出來,真正需要教程的就是我們這些小白)。
小仙同學愿意嘗試一下,把最最全面、稍作修改就能拿去的方法code分享一下,也不枉費花了那么多的時間。
那就先從violin plot開始吧。
(假設你已經安裝了R和RStudio)
Step1. 繪圖數據的準備
首先要把你想要繪圖的數據調整成R語言可以識別的格式。
一般我們的數據都是保存在excel文檔里,這里建議大家在excel中保存成csv格式,讀寫的速度會比xlsx快很多。(小仙同學的親身經驗,我的有些數據有兩萬行,xlsx在我的耐心范圍內讀不進去,RStudio崩潰)。
數據的格式如下圖:一列表示一種變量,第一行是列名
Step2. 繪圖數據的讀取
data<-read.csv(“your file path”, header = T)
#注釋:header=T表示數據中的第一行是列名,如果沒有列名就用header=F
Step3.繪圖所需package的安裝、調用
install.package(“ggplot2”) #注釋:ggplot2是目前公認繪圖很強的一個安裝包
library(ggplot2) #注釋:package在使用之前需要調用
Step4.繪圖
data$dose <- as.factor(data$dose)
#注釋:此處dose可用你的變量名稱替換,$表示取數據集里的某一個元素
p<-ggplot(data, aes(x = dose, y = len))
#注釋:”x=”,”y=”表示x軸和y軸表示的變量數值,p表示圖像對象
p+geom_violin() #注釋:畫出violin plot的函數
Step5.美化
p+geom_violin(aes(fill = dose)) #注釋:按組別填充不同的顏色
*如果你想手動改變顏色,可以使用這一句
p+geom_violin(aes(fill = “dose”))+scale_fill_manual(values=c("#56B4E9"))
#注釋:”#56B4E9”可以用其他顏色的代碼來替換
原文鏈接:https://blog.csdn.net/biocity/article/details/82931619
相關推薦
- 2022-07-10 redis主從配置+sentinel哨兵模式
- 2024-01-27 Linux關于Centos IP靜態配置
- 2022-06-15 Python實現RSA加密解密_python
- 2022-08-28 使用Freemarker生成靜態頁面
- 2022-07-12 strcpy、strncpy與memcpy的區別你了解嗎?
- 2022-11-14 .NET?Core?Web?APi類庫內嵌運行的方法_實用技巧
- 2023-11-12 編譯yolov3報錯:/usr/bin/ld: cannot find -lcudnn(/usr/b
- 2022-02-07 SSH連服務器提示“Permission denied,please try again”的原因與解
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支