R語言柱狀圖排序和x軸上的標簽傾斜操作
R語言做柱狀圖大致有兩種方法, 一種是基礎庫裡面的 barplot函數, 另一個就是ggplot2包裡面的geom_bar
此處用的是字符變量 統計其各頻數,然後做出其柱狀圖。(橫軸上的標簽顯示不全)
t <- sort(table(dat1$L), decreasing = TRUE) #將頻數表進行排序 r <- barplot(t, col = "blue", main = "柱狀圖", ylim = c(0,12), names.arg = dimnames(t) #畫字符變量的柱狀圖 tmp <- as.vector(t) #將頻數變成一個向量 text(r, tmp, label = tmp, pos = 3) #加柱子上面的標簽
或用ggplot2包 (目前仍沒有給柱子上加數字標簽)
library(ggplot2) #加載ggplot2包 reorder_size <- function(x) { factor(x, levels = names(sort(table(x)))) } #自定義函數,獲取因子型變量的因子類型 p <- ggplot(dat3, aes(reorder_size(LAI))) + #用因子變量做基礎底圖,也可直接用reorder排序 geom_bar(fill = "blue") + #畫柱狀圖 theme(axis.text.x = element_text(angle = 45, hjust = 0.5, vjust = 0.5)) + #讓橫軸上的標簽傾斜45度 xlab("柱狀圖") #給x軸加標簽
補充:R 語言條形圖,解決x軸文字排序問題
數據結果的圖形展示,R代碼,《R數據科學》是個好東西
數據格式如下:
term | category | pval |
neutrophil chemotaxis | biological_process | 1.68E-09 |
innate immune response | biological_process | 3.35E-09 |
complement activation, classical pathway | biological_process | 1.14E-08 |
negative regulation of endopeptidase activity | biological_process | 4.43E-08 |
collagen fibril organization | biological_process | 4.43E-08 |
blood coagulation | biological_process | 1.29E-07 |
proteolysis involved in cellular protein catabolic process | biological_process | 1.56E-07 |
proteolysis | biological_process | 1.13E-06 |
leukocyte migration involved in inflammatory response | biological_process | 1.47E-06 |
peptide cross-linking | biological_process | 1.47E-06 |
extracellular space | cellular_component | 8.75E-40 |
collagen-containing extracellular matrix | cellular_component | 2.08E-26 |
extracellular matrix | cellular_component | 5.72E-11 |
lysosome | cellular_component | 6.09E-10 |
extracellular region | cellular_component | 6.58E-10 |
collagen trimer | cellular_component | 1.68E-09 |
cell surface | cellular_component | 2.80E-08 |
extracellular exosome | cellular_component | 2.34E-07 |
extrinsic component of external side of plasma membrane | cellular_component | 1.47E-06 |
sarcolemma | cellular_component | 3.16E-06 |
作圖要求:x軸為term,顏色按categroy分類、並且pval由小到大排序
代碼:
#openxlsx讀入為data.frame class(data) #轉換 library(tidyverse) godata<-as_tibble(godata) class(godata) #原始數據篩選(category,term,pval)散列,按照category,-log10(pval)排序 data<-godata%>%select(category,term,pval)%>%arrange(category,desc(-log10(pval))) #畫圖時改變geom_bar的自動排序 data$term<-factor(data$term,levels = unique(data$term),ordered = T) #作圖 ggplot(data)+ geom_bar(aes(x=term,y=-log10(pval),fill=category),stat = 'identity')+ coord_flip()
結果:
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- None Found