您好,登錄后才能下訂單哦!
R語言可視化中的圖表美化與套用是怎樣的,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
ggplot函數(shù)所制作的圖表默認(rèn)設(shè)計風(fēng)格雖然經(jīng)過設(shè)計師的精雕細(xì)琢,但是并不是盡如人意。
畢竟在這個大眾審美水平水平越來越高的時代里,企業(yè)中的各式報告也強(qiáng)調(diào)與企業(yè)的VI相互統(tǒng)一,形成自身風(fēng)格與特點(diǎn)。
這樣就要求R語言所制作的圖表能夠根據(jù)所需的風(fēng)格與主題,高度可定制。當(dāng)然ggplot函數(shù)中是支持這種多樣性的訂制需求的,甚至像那些知名的咨詢或者頂級財經(jīng)媒體的御用圖表模板已經(jīng)被制作成了圖表主題分享在R語言的主題包之中。
接下來要介紹關(guān)于圖表主題設(shè)置的一些細(xì)節(jié):
關(guān)于柱形圖與條形圖的轉(zhuǎn)化問題:
這個問題昨天已經(jīng)提到了,R語言是不區(qū)分柱形圖、條形圖的,兩者都叫Barplot,只是開口方向不同。(原因前文已經(jīng)說明)
柱形圖與條形圖之間的轉(zhuǎn)換秩序一句代碼即可:
coord_flip() #柱形圖與條形圖之間翻轉(zhuǎn)
ggplot(mpg,aes(class,displ))+geom_bar(stat="identity",fill="steelblue")
ggplot(mpg,aes(class,displ))+geom_bar(stat="identity",fill="steelblue")+coord_flip()
柱形圖/條形圖按照指標(biāo)順序排序:
默認(rèn)情況下柱形圖指標(biāo)順序非?;靵y,我們可以通過參數(shù)設(shè)置讓柱形圖按照指標(biāo)由高到低或者由低到高排序。
我們從ggplot默認(rèn)自帶數(shù)據(jù)集mtcars中取前8條記錄作圖:
data<-mtcars[0:8,]
ggplot(data, aes(row.names(data), qsec))+ geom_bar(stat = "identity", fill = "steelblue")
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ geom_bar(stat = "identity", fill = "steelblue")
添加排序參數(shù)之后,圖表看上去舒服很多,但是X軸橫坐標(biāo)英文名字太長,我們采用條形圖規(guī)避,或者將X軸標(biāo)簽文字旋轉(zhuǎn)90度。
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ geom_bar(stat = "identity", fill = "steelblue")+coord_flip()
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ geom_bar(stat = "identity", fill = "steelblue")+theme(axis.text.x=element_text(angle = 90, colour = "black"))
由于添加排序參數(shù),導(dǎo)致默認(rèn)X軸標(biāo)題被更改,這里我們要從新定義X軸、Y軸標(biāo)題
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ geom_bar(stat = "identity", fill = "steelblue")+theme(axis.text.x=element_text(angle = 90, colour = "black"))+labs(x = "Cars", y = "Q seconds")
定義X軸、Y軸標(biāo)簽文本的大小、顏色、字體
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue")+
theme(axis.text.x=element_text(angle = 90,size = 10, colour = "black"),axis.text.y=element_text(size = 10, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))
添加標(biāo)題:
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue")+
theme(axis.text.x=element_text(angle = 90,size = 10, colour = "black"),axis.text.y=element_text(size = 10, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))+ggtitle("An Indrouction of BarPlot ")
還有柱形圖的背景帶著網(wǎng)格線和灰色底色,如果想要修改也需要單獨(dú)調(diào)整參數(shù)。
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue")+
theme(axis.text.x=element_text(angle = 90,size = 14, colour = "black"),axis.text.y=element_text(size = 14, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))+ggtitle("An Indrouction of BarPlot ")+
theme(panel.grid = element_blank())+theme(panel.background = element_blank())
調(diào)整柱形圖的數(shù)據(jù)條寬度:
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue",width=0.5)+
theme(axis.text.x=element_text(angle = 90,size = 14, colour = "black"),axis.text.y=element_text(size = 14, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))+ggtitle("An Indrouction of BarPlot ")+
theme(panel.grid = element_blank())+theme(panel.background = element_blank())
為圖標(biāo)添加數(shù)據(jù)標(biāo)簽:
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue",width=0.5)+
theme(axis.text.x=element_text(angle = 90,size = 14, colour = "black"),axis.text.y=element_text(size = 14, colour = "black"))+labs(x = "Cars", y = "Q seconds")+theme(text=element_text(family = "arial", size = 20))+ggtitle("An Indrouction of BarPlot ")+
theme(panel.grid = element_blank())+theme(panel.background = element_blank())+geom_text(aes(label = qsec, vjust = -0.8, hjust = 0.5)
大家可以看到,以上調(diào)整過程全部需要通過ggplot函數(shù)附加參數(shù)完成,機(jī)會每一個圖表元素都有對應(yīng)的調(diào)整參數(shù),調(diào)整起來其實蠻辛苦的,不過對于同一類參數(shù)可以放在同一參數(shù)系統(tǒng)中去,也就是簡化代碼:
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+
geom_bar(stat = "identity", fill = "steelblue",width=0.5)+
labs(x = "Cars", y = "Q seconds")+
ggtitle("An Indrouction of BarPlot ")+
geom_text(aes(label = qsec, vjust = -0.8, hjust = 0.5))+
theme(
axis.text.x=element_text(angle = 90,size = 14, colour = "black"),
axis.text.y=element_text(size = 14, colour = "black"),
text=element_text(family = "arial", size = 20),
panel.grid = element_blank(),
panel.background = element_blank()
)
經(jīng)過簡化后的代碼還是如上所示的那么長,而且我還是以最為簡單的單序列柱形圖為例所介紹的呢,而且還沒有考慮到對坐標(biāo)軸刻度線長度、刻度范圍的調(diào)整,如果是多序列條形圖甚至是分面的多序列條形圖的調(diào)整元素就更多了,以上的代碼還能繼續(xù)寫出幾十行呢(哈哈夸張了,不過真的很長呢-_-)
ggplot(data, aes(reorder(row.names(data), -qsec), qsec))+ #x軸排序
geom_bar(stat = "identity", fill = "SandyBrown",width=0.8)+ #填色、柱形寬度
labs(x = "Cars", y = "Q seconds")+ #X、Y軸標(biāo)題
ggtitle("An Indrouction of BarPlot ")+ #圖表標(biāo)題
geom_text(aes(label = qsec, vjust = -0.5, hjust = 0.5))+ #添加數(shù)據(jù)標(biāo)簽
theme(
axis.text.x=element_text(angle = 90,size = 12, colour = "DarkGrey"),
#X軸標(biāo)簽文本旋轉(zhuǎn)、大小、顏色
axis.text.y=element_text(size = 12, colour = "DarkGrey"),
#Y軸標(biāo)簽文本大小、顏色
axis.ticks.length=unit(0.5,'cm'),
#坐標(biāo)軸刻度線長度
text=element_text(family = "arial", size = 20,colour = "DimGrey"),
#圖表內(nèi)文本字體
panel.grid = element_blank(),
panel.background = element_blank()
) #清空圖層背景、網(wǎng)格線
所以呢,如果想要找到一種即不需要寫很長很冗雜的代碼,而且又能將圖表美化的超級漂亮的方法,那真的就完美了呢~
那就要站在巨人的肩膀上嘍,使用那些發(fā)燒友所寫的行業(yè)標(biāo)桿級的圖表主題包。
關(guān)于R語言可視化中的圖表美化與套用是怎樣的問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。