繪制圖形過程中瞭稼,常常需要精細化調(diào)節(jié),這就需要我們對于各種繪圖參數(shù)有一定的把握腻惠。下面我以一個簡單的例子來介紹我自己的常用背景參數(shù)設置环肘。
數(shù)據(jù)使用iris數(shù)據(jù),主要探索Sepal的長度與寬度的相互關(guān)系集灌。主要要求是將Species考慮也考慮在內(nèi)悔雹。
下面探索一下iris數(shù)據(jù)的特點。
str(iris)
搜狗截圖18年04月29日2226_2.png
在ggplot框架下欣喧,我們能夠很快的繪制出想要的模型:
library(ggplot2)
pic <- ggplot(data=iris, aes(x=Sepal.Length,y=Sepal.Width,color=Species,shape=Species)) + geom_point()
opic <- pic
pic
搜狗截圖18年04月29日2200_1.png
這個圖形可以形象化的表現(xiàn)出Sepal的長度與寬度的關(guān)系腌零,但是這些圖形太過僵化,下面我們通過微調(diào)來定制屬于我們自己的圖片唆阿。
首先我們想對圖中點的大小益涧,顏色性狀進行調(diào)整,已符合特定的標準驯鳖。
對于點的形狀和顏色闲询,我們可以參考下面兩張圖片:
ggplot2-shape-identity.png
9vl3r5.png
下面構(gòu)造函數(shù)
# color and shape setting
cbbPalette <- c("#FF0000", "#9933FF", "#CC79A7")
shapeSet <- c(16,8,17)
pic <- pic + scale_fill_manual( values=cbbPalette)
pic <- pic + scale_colour_manual( values=cbbPalette)
pic <- pic + scale_shape_manual(values =shapeSet)
pic
效果如下:
2.png
其次,我們構(gòu)造一個特殊函數(shù)浅辙,該函數(shù)可以調(diào)整標簽扭弧、坐標軸以及圖形背景
# axis setting
axisSetting <- theme( # remove grid line
panel.border = element_blank(),
axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.title.x = element_text(size=15,color='black',face='bold'),
axis.title.y = element_text(size=15,color='black',face='bold'))
代碼及效果圖如下
pic <- pic + axisSetting
pic
23.png
再次,我們也構(gòu)造函數(shù)可對圖例進行微調(diào)记舆,以適應版面:
legendSetting <- theme(
legend.position = c(.95, .95),
legend.justification = c("right", "top"),
legend.box.just = "right",
legend.margin = margin(6, 6, 6, 6)
#legend.position = "none"
)
代碼及效果如下:
pic <- pic + legendSetting
pic
33.png
最后鸽捻,我們雖然可以對單張圖進行精細化調(diào)劑,但更希望構(gòu)造一個函數(shù)能夠同時對多張圖進行調(diào)節(jié)泽腮。結(jié)合上面三個討論御蒲,構(gòu)造一個整體函數(shù)
Adjust_picture<- function(data,x,y,group)
{
#basic picture
pic <-ggplot2::ggplot(data=data,ggplot2::aes_string(x=x,y=y, color=group,shape=group))+
ggplot2::geom_point()
# point type and color setting
cbbPalette <- c("#FF0000", "#9933FF", "#CC79A7")
shapeSet <- c(16,8,17)
pic <- pic + scale_fill_manual( values=cbbPalette)
pic <- pic + scale_colour_manual( values=cbbPalette)
pic <- pic + scale_shape_manual(values =shapeSet)
# axis setting
axisSetting <- theme( # remove grid line
panel.border = element_blank(),
axis.line = element_line(colour = "black"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.title.x = element_text(size=15,color='black',face='bold'),
axis.title.y = element_text(size=15,color='black',face='bold'))
pic <- pic + axisSetting
# legend setting
legendSetting <- theme(
legend.position = c(.95, .95),
legend.justification = c("right", "top"),
legend.box.just = "right",
legend.margin = margin(6, 6, 6, 6))
pic <- pic + legendSetting
pic
}
這樣我們就可以使用Adjust_picture 函數(shù)同時完成上述改進
Adjust_picture(iris,"Sepal.Length", "Sepal.Width","Species")
探索是無止境的,最后的最后我們可以使用同一個函數(shù)分析多種關(guān)系诊赊,也就是一頁多圖厚满,希望大家自己探索。