使用GGPLOT2包进行数据可视化
-
Introduction简介
geom_smooth可以用于散点图,拟合一条直线,可以用于做预测
geom_point(alpha = 0.4)透明度,40%可见,60%透明
dia_plot <- ggplot(diamonds, aes(x = carat, y = price))
dia_plot + geom_smooth(aes(clarity = col), se = FALSE)其中SE = FALSE是取消灰色部分
-
Data数据
lm()函数通常用来拟合回归模型
ggplot(mtcars, aes(x = wt, y = mpg, col = cyl)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
geom_smooth(aes(group = 1), method = "lm", se = FALSE, linetype = 2)
facet_grid 将 grid 分成好几个面
facet_grid(. ~ Measure)按measure分,measure中的变量为character
geom_jitter()调整,消除点的重合
-
Aesthetics
ggplot(mtcars, aes(x = wt, y = mpg, col = cyl)) +
geom_point(shape = 2,size = 4)
shape和size可以分别制定点的形状以及大小
ggplot(mtcars, aes(x = wt, y = mpg, fill = cyl, col = am)) +
geom_point(shape = 21, size = 4, alpha = 0.6)fill是填充,此时再用col分颜色的话,col这边就是边框颜色
my_color <- "#4ABEFF"
geom_point(color = my_color)根据颜色编号,改变散点图中所有点的颜色
geom_text(label = rownames(mtcars), color = 'red')直接将文本信息加入散点图,即将散点替换为文本信息。
ggplot(mtcars, aes(x = mpg, y = qsec, col = factor(cyl), shape = factor(am))) +
geom_point()此处am和cyl都是num的类型,转化为factor后才好合理的展示出来。
cyl.am +
geom_bar(position = "dodge") +
scale_x_discrete("Cylinders") +
scale_y_continuous("Number") +
scale_fill_manual("Transmission",
values = val,
labels = lab) 柱形图
geom_bar(position = "stack")正常柱形图
geom_bar(position = "fill")堆积柱形图
geom_bar(position = "dodge") 百分比堆积柱形图
scale_y_continuous(limits = c(-2,2))
ggplot(diamonds, aes(x = carat, y = clarity, col = price)) +
geom_point(alpha = 0.5, position = "jitter")此处的jitter应该还是为了消除点的重合,不过为什么是用position还是不太明白,后续知道了的话记得补充。
-
Geometries
ggplot(mtcars, aes(x = cyl, y = wt)) +
geom_point(position =position_jitter(0.1))
???jitter到底是啥意思
ggplot(mtcars, aes(x = cyl, y = wt)) +
geom_jitter(width = 0.1)
ggplot(mtcars, aes(mpg)) +
geom_histogram(aes(y = ..density..), binwidth = 1, fill = "#377EB8")
直方图(仅限X为连续型变量)的构建,binwidth:组距
density(一维密度估计),x(组的中心估计)——默认利用count和x;如若#要引用这几个变量,则在变量左右加双圆点,譬如 ..density..
ggplot(mtcars, aes(x = cyl, fill = am)) +
geom_bar(position = position_dodge(width = 0.2))柱状中,俩相邻的柱子部分重合
位置调整参数:
dodge:“避让”方式,即往旁边闪,如柱形图的并排方式就是这种。
fill:填充方式, 先把数据归一化,再填充到绘图区的顶部。
identity:原地不动,不调整位置
jitter:随机抖一抖,让本来重叠的露出点头来
stack:叠罗汉
geom_freqpoly()频数多边形图
原理是跟直方图一样的,其中binwidth参数必须给出。
ggplot(mtcars, aes(mpg, col = cyl)) +
geom_freqpoly(binwidth = 1, position = "identity")
ggplot(mtcars, aes(x = cyl, fill = am)) +
geom_bar() +
scale_fill_brewer(palette = "Set1")
第三行为颜色的设置
RColorBrewer包提供了3套很好的配色方案。用户只需要指定配色方案的名称,就可以用包中的brewer.pal()函数生成颜色
连续型Sequential:生成一系列连续渐变的颜色,通常用来标记连续型数值的大小。
极端型Diverging:生成用深色强调两端、浅色标示中部的系列颜色,可用来标记数据中的离群点。
离散型Qualitative:生成一系列彼此差异比较明显的颜色,通常用来标记分类数据。
display.brewer.all(type = "qual")展示离散型的全部颜色
scale_fill_manual()自定义填充颜色,和 scale_fill_brewer对比之。
-
qplot and wrap-up
The old way (shown)旧方法:
plot(mpg ~ wt, data = mtcars) # formula notation
with(mtcars, plot(wt, mpg)) # x, y notation
Using ggplot:使用ggplot2:
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
Using qplot:使用qplot:
qplot(wt, mpg, data = mtcars)
qplot(wt, mpg, data = mtcars, size = factor(cyl))qplot的格式,会自动选择图表类型。
在aes中或者qplot中时,size = ...时,num格式要使用factor()将其转化为factor格式
geom_dotplot()
ggplot(ChickWeight, aes(x = Time, y = weight, color = Diet)) +
geom_line(aes(group = Chick), alpha = 0.3) +
geom_smooth(lwd = 2, se = FALSE)
折线图,其中group是分组,但是不是很明白smooth中的拟合线中lwd,se是什么意思
-
Statistics统计
stat_smooth()这是啥意思?——散点图的拟合线
geom_smooth(method = "lm", se = FALSE)method是规定拟合线的形状,此处为直线,se是把拟合线周围灰色部分去除
scale_color_manual(values = ....)手动设置颜色
stat_smooth(method = "loess", aes(group = 1, col = "All"),
se = FALSE, span = 0.7)分组设置的拟合线,其中ALL是汇总在一起的拟合线。
scale_color_gradientn(colors = brewer.pal(9, "YlOrRd"))当那个颜色包只有9个时,可以使用这个设置为渐变的
stat_quantile()分位数回归
stat_sum()
scale_size()啥意思?怎么用?
stat_summary()
quantile()分位数
-
Coordinates and Facets协作...方面?
scale_x_continuous(limits = c(3, 6), expand = c(0, 0))
coord_cartesian(xlim = c(3, 6))
coord_equal()
coord_fixed()这几个图层都是什么意思
stat_bin()
geom_bar()饼图
coord_polar(theta = "y")
geom_bar(width = .1) 这里的0为什么要省去
facet_grid()
facet_grid 将 grid 分成好几个面
facet_grid(.~ Name) # 按Name分面并且Name 内容显示在顶部
fact_grid(Name~.) #按name分面,Name显示在右边
facet_grid(Name~Left) #按两个参数分面 (参数1按行方式进行分面,参数2按列方式分面?)
-
Themes主题
library(ggthemes)
no_panels <- theme(rect = element_blank())
z +
no_panels +
theme(plot.background = element_rect(fill = myPink, color = "black", size = 3))
z +
theme(panel.grid = element_blank(),
axis.line = element_line(color = "red"),
axis.ticks = element_line(color = "red"))
theme(legend.position = )规定图例的位置
theme_bw()
theme_classic()
theme_gray()
theme_tufte()
-
Best Practices练习
stat_summary绘制汇总数据
ggplot(mtcars, aes(x = cyl, y = wt)) +
stat_summary(fun.y = mean, geom = "bar", fill = "skyblue") +
stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1), geom = "errorbar", width = 0.1)
library(GGally)
ggparcoord()
scale_fill_gradientn(colors = )是啥子意思?
cf facet_wrap与facet_grid
facet_wrap和facet_grid不同在于facet_wrap是基于一个因子进行设置,facets表示形式为:变量(单元格)
而facet_grid是基于两个因子进行设置,facets表示形式为:变量变量(行列),如果把一个因子用点表示,也可以达到facet_wrap的效果,也可以用加号设置成两个以上变量
-
Case Study案列教学
geom_histogram()直方图 是要设置宽度的,没有y值
ggplot(adult, aes (x = SRAGE_P, fill= factor(RBMI))) +
geom_histogram(binwidth = 1)
table()
library(reshape2)
library(ggthemes)
网友评论