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