您的位置:首页 > 其它

R for Data Science 第1章 ggplot2数据可视化

2020-02-01 04:53 2296 查看

参考书籍: R for Data Science
书籍链接:https://r4ds.had.co.nz/index.html
参考答案链接:https://jrnold.github.io/r4ds-exercise-solutions/data-visualisation.html

典型数据处理流程


(1)Import:获取存储在文件、数据库、web API中的数据,将其倒入R语言的data frame。
(2)Tidy: 将数据存储为符合符合存储数据集的语义的一致格式。
(3)Transform:转化包括缩小感兴趣的观测范围(如一座城市里的所有人,最后一年的所有数据)、由先存变量的函数创建新的变量(如通过加速度和时间计算速度)和计算一组汇总统计数据(如计数和平均值)。
(4)Visualization:可视化是基础的人类活动。好的可视化能够向你展示意想不到的结果、提出新的问题,还能够帮你发现错误的问题或者你需要手机不同的数据。
(5)Models: 模型是可视化的补充工具,是基本的数学和计算机工具,因此它们通常具有很好的伸缩性。
(6)Communication:数据科学的最后一个步骤,也是任何数据分析计划最重要的部分,你可以跟别人交流你的工作。
注意:
①可视化与建模的优点和缺点是互补的,因此实际分析中可能会反复进行多次。
②上述所有的工具都需要编程programming.
③数据分析可以分为两个部分:hypothesis generation和hypothesis confirmation

ggplot2数据可视化

ggplot2网站:http://had.co.nz/ggplot2/
两种构图语法:Wickham’s grammar and Wilkinson’s grammar
构图的层次语法:http://vita.had.co.nz/papers/layered-grammar.pdf

ggplot2绘图有很多的层:
(1)Aesthetics:美学层(x,y轴、颜色、大小、标签、形状、线宽等)
library(tidyverse)
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy,color = class))

ggplot()创建一个坐标系统,可以添加图层;ggplot(data = mpg)创建了一副空的图。
geom_point()增加了一个点图层,创建散点图。
aes()函数的功能是指定每个变量扮演的角色(aes代表aesthetics,即如何用视觉形式呈现信息)
aes的参数包括color、shape、size、stroke等。

(2)Facets:面(划分绘图面板)

通过单个变量划分绘图面板,使用facet_wrap()

ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_wrap(~ class, nrow = 2)


结合两个变量划分绘图面,使用facet_grid()

ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy)) +
facet_grid(drv ~ cyl)

(3)Geometries:几何客体层(散点图、线图、柱状图、条形图等)
# 用点来描述
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy))

# 用平滑的曲线来描述
ggplot(data = mpg) +
geom_smooth(mapping = aes(x = displ, y = hwy))

#以drv为分类变量对数据进行分类,然后对各个分类分别作图
ggplot(data = mpg) +
geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv)) +
geom_point(mapping = aes(x = displ, y = hwy,color = drv))

geom_smooth()基于描述汽车的驱动轮的变量drv, 将汽车划分为三条线。

以drv为分类变量对数据进行分类,然后对各个分类分别作图

(4) Statistics:统计层(添加统计信息)
?diamonds
#使用geom_bar绘制条形图
ggplot(data = diamonds) +
geom_bar(mapping = aes(x = cut))

#使用stat_count绘制条形图
ggplot(data = diamonds) +
stat_count(mapping = aes(x = cut))

geom_bar的默认统计量stat是count,意味着geom_bar()将调用stat_count()。
上述两个命令显示相同的图片,这是因为每一个几何量gemo都对应着一个统计量stat, 每一个统计量stat也对应着一个几何量geom。
ggplot2提供了20个统计函数,每个函数的用法你可用?stat_bin获取帮助,或者查看ggplot2 cheatsheet:
https://www.rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf

(5)Position Adjustments:位置调整系统

"identity", "dodge"和 "fill"三个参数的含义:

  • position = "identity"
    将直接展示object的位置。会重叠,对于条形图不太适用,常需要设置透明度参数
    alpha
  • position = "fill"
    像栈一样,使每个堆放的条形图高度相同,便于组间的比例比较。
  • position = "dodge"
    将重复的object直接放在另外一个object的旁边。
  • 对于散点图可以使用
    position = "jitter"
    为点加上一个很小的随机噪声,避免点的重叠overplotting。
(6) Coordinates System:坐标系(笛卡尔坐标系、极坐标系等)

坐标系系统是ggplot2最复杂的部分,默认的坐标系统是笛卡尔坐标系(x和y独立表示点的位置)。除此之外还有以下坐标系:

  • coord_flip()
    交换x轴和y轴。在画横向的箱线图时很有用。
  • coord_quickmap()
    为映射设置正确的纵横比。如果你要用ggplot2绘制空间数据,那么这一点很重要。、
nz <- map_data("nz")
ggplot(nz, aes(long, lat, group = group)) +
geom_polygon(fill = "white", color = "black")
ggplot(nz, aes(long, lat, group = group)) +
geom_polygon(fill = "white", color = "black") +
coord_quickmap()

  • coord_polar()
    用于极坐标系。极坐标能够揭示柱状图和鸡冠图之间的有趣联系。
bar <- ggplot(data = diamonds) +
geom_bar(
mapping = aes(x = cut, fill = cut),
show.legend = FALSE,
width = 1
) +
theme(aspect.ratio = 1) +
labs(x = NULL, y = NULL)

bar + coord_flip()
bar + coord_polar()

  • 点赞
  • 收藏
  • 分享
  • 文章举报
LonghaoJia1997 发布了2 篇原创文章 · 获赞 1 · 访问量 1175 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐