問題:如何在一張圖上面繪製多組散點圖和折線圖?例如在下面的評分數據中,每輪數據繪製散點圖,平均值繪製折線圖。函數
數據(excel):營業廳評分數據spa
作法:R語言ggplot函數excel
1 library(readxl) 2 library(ggplot2) 3 data<-read_excel("C:\\...\\數據.xlsx",sheet = 2,col_names=T) 4 names(data)<-c("x","y1","y2","y3","y4","ym") 5 6 fills=c('第一輪'="blue",'第二輪'="yellow",'第三輪'="lightpink",'第四輪'="red",'平均值'="green")
7 ggplot(data)+geom_point(aes(x,y=y1,fill ="第一輪"),size=5,shape=21,color="black")+ 8 geom_point(aes(x,y=y2,fill="第二輪"),size=5,shape=21)+ 9 geom_point(aes(x,y=y3,fill="第三輪"),size=5,shape=21)+ 10 geom_point(aes(x,y=y4,fill="第四輪"),size=5,shape=21)+ 11 geom_point(aes(x,y=ym,fill="平均值"),size=5,shape=21)+ 12 geom_line(aes(x,y=ym),color="black",group=1)+labs(x="營業廳名稱",y="評分",title="員工形象管理評分狀況",fill="")+ 13 scale_fill_brewer(,limits=c('第一輪','第二輪','第三輪','第四輪','平均值'))+ #採用默認配色 14 theme(plot.title = element_text(hjust = 0.5))
注:code
-
read_excel("C:\\...\\數據.xlsx",sheet = 2,col_names=T) #sheet指定第幾個表,col_names=T 是將第一行設成列名。
-
names(data)<-c("x","y1","y2","y3","y4","ym") #重命名列名,便於後面分開使用各列。
-
fills=c('第一輪'="blue",'第二輪'="yellow",'第三輪'="lightpink",'第四輪'="red",'平均值'="green") #添加映射,便於後面圖例按「第一輪」的形式輸出。
-
ggplot(data)+geom_point(aes(x,y=y1,fill ="第一輪"),size=5,shape=21,color="black") #填充參數fill是映射關係,放到aes函數裏,shape=21 指定形狀爲實心圓點,color指定邊框顏色。
-
geom_line(aes(x,y=ym),color="black",group=1)+labs(x="營業廳名稱",y="評分",title="員工形象管理評分狀況",fill="") #geom_line添加折線,group=1 參數必須設定。labs設定行列標題及主標題,fill=「」指去掉圖例標題。
-
scale_fill_brewer(palette='Set1',limits=c('第一輪','第二輪','第三輪','第四輪','平均值')) #palette='Set1'設定顏色類型,空的話爲默認色,limits 指定圖例排列順序。
-
theme(plot.title = element_text(hjust = 0.5)) #plot.title = element_text(hjust = 0.5) #水平調整主標題文本位置到正中間,hjust = 0指靠左對齊。