R語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖

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

在石柱土家族等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷(xiāo)型網(wǎng)站,外貿(mào)網(wǎng)站建設(shè),石柱土家族網(wǎng)站建設(shè)費(fèi)用合理。

R語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖  
image.png

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

 

首先畫(huà)熱圖

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

那我們就按照這個(gè)思路來(lái)構(gòu)造數(shù)據(jù)

R語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖  
image.png

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

 首先是讀入數(shù)據(jù)
df<-read.csv("example_data/ggplot2_heatmap.csv",header=T)
   以上數(shù)據(jù)是寬格式,借助reshape2這個(gè)包中的melt函數(shù)將寬格式轉(zhuǎn)變?yōu)殚L(zhǎng)格式
df1<-reshape2::melt(df)
   ggplot2畫(huà)熱圖
library(ggplot2)
ggplot(df1,aes(x=variable,y=A))+
  geom_tile(aes(fill=value),color="black")+
  theme(panel.background = element_blank())
 
R語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖  
image.png
 這個(gè)地方遇到一個(gè)問(wèn)題是缺失值如何給他填充為白色,我想到的辦法是給缺失值賦值為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語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖  
image.png

這樣是不是和文章開(kāi)頭提到的圖有點(diǎn)像了。

 

接下來(lái)是美化

 調(diào)整一下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語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖  
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語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖  
image.png
 標(biāo)題的下滑線如何用代碼添加我暫時(shí)還不知道,直接出圖后手動(dòng)編輯吧。上面的圖還忘記添加文字標(biāo)簽了,下面補(bǔ)上
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語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖  

上述內(nèi)容就是R語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)名稱(chēng):R語(yǔ)言ggplot2怎樣畫(huà)帶有空白格的熱圖
本文URL:http://muchs.cn/article24/geceje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)