溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

R語言ggplot2怎樣畫帶有空白格的熱圖

發(fā)布時間:2021-11-22 15:12:56 來源:億速云 閱讀:487 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了R語言ggplot2怎樣畫帶有空白格的熱圖,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

R語言ggplot2怎樣畫帶有空白格的熱圖  
image.png

之前有人在公眾號留言問文章開頭這幅圖如何實現(xiàn),下面的B圖是折線圖加柱形圖,相對比較容易實現(xiàn),上面的A圖稍微有點復雜,我想到的辦法是拼圖,圖A可以看成三個熱圖,然后加一個堆積柱形圖,最后將四個圖組合到一起。那就按照這個思路試一下看能不能實現(xiàn)。

 

首先畫熱圖

這個熱圖和常規(guī)的還稍微有點不太一樣,可以簡單的理解為帶有缺失值的熱圖,缺失值是空白格,其他值分別填充顏色。

那我們就按照這個思路來構造數(shù)據(jù)

R語言ggplot2怎樣畫帶有空白格的熱圖  
image.png

將數(shù)據(jù)集按照以上格式整理好,存儲在csv文件中。

 首先是讀入數(shù)據(jù)
df<-read.csv("example_data/ggplot2_heatmap.csv",header=T)
   以上數(shù)據(jù)是寬格式,借助reshape2這個包中的melt函數(shù)將寬格式轉變?yōu)殚L格式
df1<-reshape2::melt(df)
   ggplot2畫熱圖
library(ggplot2)
ggplot(df1,aes(x=variable,y=A))+
  geom_tile(aes(fill=value),color="black")+
  theme(panel.background = element_blank())
 
R語言ggplot2怎樣畫帶有空白格的熱圖  
image.png
 這個地方遇到一個問題是缺失值如何給他填充為白色,我想到的辦法是給缺失值賦值為0,然后將0,1,2,3離散化處理,然后分別分配顏色
df1$value1<-ifelse(is.na(df1$value),0,df1$value)
df1$value1<-as.factor(df1$value1)
summary(df1)
ggplot(df1,aes(x=variable,y=A))+
  geom_tile(aes(fill=value1),color="black")+
  scale_fill_manual(values = c("white","red","red2","red4"))+
  theme(panel.background = element_blank())
 
R語言ggplot2怎樣畫帶有空白格的熱圖  
image.png

這樣是不是和文章開頭提到的圖有點像了。

 

接下來是美化

 調整一下y軸的的順序
df1$A<-factor(df1$A,levels = rev(df$A))
ggplot(df1,aes(x=variable,y=A))+
  geom_tile(aes(fill=value1),color="black")+
  scale_fill_manual(values = c("white","red","red2","red4"))+
  theme(panel.background = element_blank())
 
R語言ggplot2怎樣畫帶有空白格的熱圖  
image.png
 將X軸放到頂部
ggplot(df1,aes(x=variable,y=A))+
  geom_tile(aes(fill=value1),color="black")+
  scale_fill_manual(values = c("white","orangered","red2","red4"))+
  scale_x_discrete(position = "top")+
  theme(panel.background = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        axis.text.x.top = element_text(angle = 90,
                                       hjust = 0,
                                       vjust= 0.5),
        plot.title = element_text(hjust=0.5),
        legend.position = "none")+
  labs(title = "Plant growth and development")
 
R語言ggplot2怎樣畫帶有空白格的熱圖  
image.png
 標題的下滑線如何用代碼添加我暫時還不知道,直接出圖后手動編輯吧。上面的圖還忘記添加文字標簽了,下面補上
ggplot(df1,aes(x=variable,y=A))+
  geom_tile(aes(fill=value1),color="black")+
  scale_fill_manual(values = c("white","orangered","red2","red4"))+
  scale_x_discrete(position = "top")+
  theme(panel.background = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        axis.text.x.top = element_text(angle = 90,
                                       hjust = 0,
                                       vjust= 0.5),
        plot.title = element_text(hjust=0.5),
        legend.position = "none")+
  labs(title = "Plant growth and development")+
  geom_text(aes(label=value1,color=value1))+
  scale_color_manual(values = c("white","black","black","black"))
 
R語言ggplot2怎樣畫帶有空白格的熱圖  

上述內(nèi)容就是R語言ggplot2怎樣畫帶有空白格的熱圖,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI