背景介紹
最近又重新把《R數據可視化手冊》這本書讀了一遍,又有了一些新的體會,將其中的一些重點難點,自己感覺有用且有必要總結的內容,就花了一點時間總結了下來。同時將自己總結的內容,分享給你們。有需要的可以收藏學習。
就是下面這本書,明顯被我翻舊了!同時提供了當當網的購書連結,需要的可以購買!個人非常推薦閱讀,就像一本工具書,書中以提問的形式進行解答,解決問題,挺不錯的。
軟體介紹
R、RStudio
溫故而知新
1.如何從Excel中讀取某個工作表
假如我們的Excel中有3個工作表,需要讀取的數據在第2個工作表,該如何讀取?
- 使用Excel中工作表的順序來指定
library(openxlsx) read.xlsx("datafile.xlsx",sheet = 2)
- 使用Excel中工作表的名稱來指定
library(openxlsx) read.xlsx("datafile.xlsx",sheet = "Sheet2")
2.如何從SPSS文件中加載數據
假如我們的數據在SPSS中,如何從中讀取數據
install.packages("foreign") library(foreign) read.spss("datafile.sav")
3.如何使用每組兩個變量進行繪圖?
假如我們的橫坐標需要每組兩個指標繪圖,如何繪圖?
下圖是ToothGrowth數據集,我們需要以supp和dose為分組進行繪圖。
ggplot(ToothGrowth, aes(interaction(supp,dose),len))+ geom_boxplot()
4.某個分類變量的簇狀條形圖如何繪製?
以下是gcookbook函數包中cabbage_exp的數據集,我們想以Date為分類,Cultivar為填充繪圖如何做?
ggplot(cabbage_exp,aes(Date,Weight,fill=Cultivar))+ geom_bar(position = "dodge",stat="identity")
如果你想調節兩個柱子的距離,可以對position_dodge()和width進行參數的調節
ggplot(cabbage_exp,aes(Date,Weight,fill=Cultivar))+ geom_bar(position = position_dodge(0.7),width=0.5,stat="identity")
這裡需要強調的是使用position = "dodge",如果沒有這個語法,柱子將不會分開,疊加顯示,如下所示。
ggplot(cabbage_exp,aes(Date,Weight,fill=Cultivar))+ geom_bar(stat="identity")
5.如何從一個數據集中挑選想要的數據?
比如gcookbook包中uspopchange數據集的Change列,我們只想要其中數值大於5的,如何辦到?
library(gcookbook) subset(uspopchange,Change>5)
6.繪圖中圖形,如何指定顏色?
在繪製具有分組的圖形,包括散點圖,折線圖,柱狀圖等等,如何對幾何圖形指定顏色?
比如我們使用mtcars數據集,繪製出了一幅柱狀圖,由於我們將cyl進行因子化,因此為三種顏色。那麼如何更改三種顏色呢
ggplot(mtcars,aes(factor(cyl),mpg,fill=factor(cyl)))+ geom_bar(stat="identity")
直接使用scale_fill_manual()函數指定顏色即可,這裡注意,指定的顏色需要和分類相同。也就是factor(cyl)有三種,那麼你指定三種顏色即可
ggplot(mtcars,aes(factor(cyl),mpg,fill=factor(cyl)))+ geom_bar(stat="identity")+ scale_fill_manual(values = c("red","blue","black"))
還有一種指定顏色的方法,我們寫出函數後,將滑鼠放在values=之後
點擊插件Colour Picker(沒有的可以使用install.packages(colourpicker)安裝一下,就有了)
需要幾個顏色,就選擇幾個顏色即可,點擊Done
然後顏色數值就會自動填充進來,運行代碼即可,好看的圖就出來了
ggplot(mtcars,aes(factor(cyl),mpg,fill=factor(cyl)))+ geom_bar(stat="identity")+ scale_fill_manual(values =c("#F0FFFF", "#FF4040", "#008B8B"))
7.圖例的順序如何逆轉?
當我們在圖中出現圖例,那麼圖例的順序如何逆轉?
- 使用guides()函數,進行fill=guide_legend()的設置,reverse=TRUE即可
ggplot(cabbage_exp,aes(Date,Weight,fill=Cultivar))+ geom_bar(position = position_dodge(0.7),width=0.5,stat="identity")+ guides(fill=guide_legend(reverse=TRUE))
8.百分比堆積條形圖如何繪製?
如果我們想要繪製百分比堆積條形圖,該如何繪製?
首先我們需要計算百分比堆積條形圖的數據,我們以cabbage_exp為例,需要計算重量的百分比堆積圖
首先計算百分比的數據,這裡也可以順便學一下,如何給一個數據集增加一列數據。
library(plyr) ce <- ddply(cabbage_exp,"Date",transform, percent_weight=Weight/sum(Weight)*100) ce
然後開始繪圖即可
ggplot(ce,aes(Date,percent_weight,fill=Cultivar))+ geom_bar(stat="identity")
9.如何給圖形增加數據標籤?
想要將數據展示在圖形上,怎麼做呢?
首先我們構建一個data數據集,分別為橫縱坐標,然後繪圖,使用geom_text()進行設置即可,還可以設置字體的顏色和大小等
data <- data.frame(a=c(1:5), b=c(2:6)) ggplot(data,aes(a,b))+ geom_bar(stat="identity")+ geom_text(aes(label=b),vjust=-0.2,size=5,colour="red")
10.如何將y軸進行log
數據相差太大,如何對數據進行log
首先使用worldpop數據集進行繪圖,我們會發現數據相差太大
library(gcookbook) ggplot(worldpop,aes(Year,Population))+ geom_line()+ geom_point()
接下來,我們對y軸取對數,再看看結果
ggplot(worldpop,aes(Year,Population))+ geom_line()+ geom_point()+ scale_y_log10()
趕緊來試試吧!