1、Review
>library(ggplot2)
>attach(mpg)
>head(mpg)
# A tibble: 6 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
>?mpg
qplot(displ, hwy, data = mpg, colour = cyl) #cyl为整型
qplot(displ, hwy, data = mpg, colour = class) #class为字符型
qplot(displ, hwy, data = mpg, colour = factor(cyl)) #使用fator()转换为因子
#下述两条命令生成的图一致
qplot(displ, hwy, data = mpg,
colour = cyl,
geom = c("smooth","point"),
method = "lm")
qplot(displ, hwy, data = mpg, colour = cyl) + geom_smooth(method = "lm") +geom_point()
#下述两条命令生成的图一致
qplot(displ, hwy, data = mpg,
colour = factor(cyl),
geom = c("smooth","point"),
method = "lm") #method = "lm"表示smooth线采用线性模型,图中阴影部分表示标准差
qplot(displ, hwy, data = mpg, colour = factor(cyl),) + geom_smooth(method = "lm") +geom_point()
qplot(displ, hwy, data = mpg, facets = .~year) + geom_smooth() +geom_point()
#facets = .~year表示按year来分面
2、Save Rdata or plot
> p <- qplot(displ, hwy, data = mpg, colour = factor(cyl))
> summary(p)
data: manufacturer, model, displ, year, cyl, trans, drv, cty, hwy, fl, class [234x11]
mapping: x = ~displ, y = ~hwy, colour = ~factor(cyl)
faceting: <ggproto object: Class FacetNull, Facet, gg>
compute_layout: function
draw_back: function
draw_front: function
draw_labels: function
draw_panels: function
finish_data: function
init_scales: function
map_data: function
params: list
setup_data: function
setup_params: function
shrink: TRUE
train_scales: function
vars: function
super: <ggproto object: Class FacetNull, Facet, gg>
-----------------------------------
geom_point: na.rm = FALSE
stat_identity: na.rm = FALSE
position_identity
>save(p, file = "plot.rdata") #保存r中的数据,其中可以写入路径,不写则保存在当前的工作目录下
>load(plot.rdata) #向R的数据空间中导入数据
>ggsave("plot.png", width = 5, height = 5) #保存当前作图空间中的图片; .png后缀名代表不同格式的图片
3、Build a plot layer by layer
#layer 1
p <- ggplot(diamonds, aes(carat, price, colour = cut))
p
#layer 2
p <- p + geom_point()
p
#上述layer1+2等同于:
p <- ggplot(diamonds, aes(carat, price, colour = cut)) + geom_point()
p
#layer(geom, geom_params, stat, stat_params, data, mapping, position)
p <- ggplot(diamonds, aes(x = cut))
p <- p + geom_bar(fill = "blue")
p
#basic form
#geom_XXX(mapping, data, ... , geom, position)
#stat_XXX(mapping, data, ... , stat, position)
ggplot(msleep, aes(sleep_rem/sleep_total, awake)) + geom_point()
#等同于:
qplot(sleep_rem/sleep_total, awake, data = msleep) #qplot()中默认geom为“point”
#以下三种命令结果一致
qplot(sleep_rem/sleep_total, awake, data = msleep, geom = c("smooth","point"))
ggplot(msleep, aes(sleep_rem/sleep_total, awake)) + geom_point() + geom_smooth()
#等价于
plot <- ggplot(msleep, aes(sleep_rem/sleep_total, awake))
plot <- plot + geom_point() + geom_smooth()
plot
ggplot(msleep, aes(sleep_rem, sleep_total)) + geom_point(shape = 1) + bestfit
ggplot(mpg, aes(displ, hwy)) + geom_point(shape = 1) + bestfit + facet_grid(.~year) # 在x轴根据year来分面
ggplot(mpg, aes(displ, hwy)) + geom_point(shape = 1) + bestfit + facet_grid(year~.) # 在y轴根据year来分面
ggplot(mpg, aes(displ, hwy)) + geom_point(shape = 1) + bestfit + facet_grid(year~cyl)
# 在x轴根据year来分面,在y轴根据cyl来分面,注意分面依据x、y轴不可相同
4、transform the data in the plot using %+%
p <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) + geom_point(size = 4)
p
mtcars <- transform(mtcars, mpg = mpg ^ 2) #mpg变为原来的平方
p %+% mtcars
欢迎关注微信公众号:BioLearner
网友评论