搜索
查看: 673|回复: 0

<R for Data Science> 读书笔记3 | 数据可视化2

[复制链接]

12

主题

18

帖子

151

积分

注册会员

Rank: 2

积分
151
发表于 2018-9-22 17:03:29 | 显示全部楼层 |阅读模式
本帖最后由 冒刷 于 2018-10-7 16:18 编辑

写在最前面的感谢:
本篇笔记在小洁详解 http://www.biotrainee.com/thread-2736-1-1.html 的指导下完成,特此感谢!

3.7 统计变换 - 绘图时用于计算生成的新数据input diamonds数据集,
[AppleScript] 纯文本查看 复制代码
ggplot2::diamonds

53940 条记录,变量有carat, cut, color, clarity, depth, table 钻石顶部相对于最宽点的宽度, price and xyz.

geom_bar 生成的图y轴为x轴的计数。每个几何对象函数都有一个默认的统计变换,geom_bar 的默认统计变换是stat_count;每一个统计变换都有一个默认的几何对象,stat_count的默认几何对象是bar。因此,以下两种命令的绘图效果是一样的。
[AppleScript] 纯文本查看 复制代码
ggplot(data = diamonds) + geom_bar (mapping = aes (x = cut))
# geom equals stat function, e.g. the following command can be used to recreate the same plot
ggplot(data = diamonds) + stat_count(mapping = aes (x = cut))




特定情况下想要使用stat的原因,主要是覆盖stat的默认绘制效果:
1. 将默认情况下新生成的变量count改为identity。
[AppleScript] 纯文本查看 复制代码
demo <- tribble(
  ~cut,         ~freq,
  "Fair",       1610,
  "Good",       4906,
  "Very Good",  12082,
  "Premium",    13791,
  "Ideal",      21551
)
# 新建表格并赋值给demo

ggplot(data = demo) +
  geom_bar(mapping = aes(x = cut, y = freq), stat = "identity")




2. 覆盖从统计变换生成变量到图形属性的默认映射,即绘制图形不以stat默认的y轴为x轴的计数,而是在y轴显示对应x轴各数据点的比例时,需要使用prop。
[AppleScript] 纯文本查看 复制代码
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))
# 使用 group = 1 将所有钻石作为整体,若缺失,每种质量的钻石各为一组计算,比例就均为100%...




3. 在代码中强调统计变换,如使用stat_summary。
[AppleScript] 纯文本查看 复制代码
ggplot(data = diamonds) + stat_summary (mapping = aes (x = cut, y = depth), fun.ymin = min, fun.ymax = max, fun.y = median)
# stat_summary is used to summarise the y values for each unique x value




ggplot2提供有20个stats功能可用,可使用
[AppleScript] 纯文本查看 复制代码
?stat_bin
命令进行查询选择。

3.8 位置调整 - 直方图(bar)中,颜色映射有colour和fill之分,表示边框和填充。

[AppleScript] 纯文本查看 复制代码
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, colour = cut))
# pic colour
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = cut))
# pic cut

pic. colour


pic. fill

> 堆叠图,通过在基础条形图上调用position参数并赋值identity,dodge或fill调整图形展示效果。
1. position = "identity"    对2d的几何图形,如点形图更有用。
    1.1 赋予alpha一个小的数值,bar直方图会以轻透明效果呈现
[AppleScript] 纯文本查看 复制代码
ggplot(data = diamonds, mapping = aes (x = cut, fill = clarity)) + geom_bar(alpha = 1/2, position = "identity")



    1.2 赋予fill=NA设置bar直方图为全透明效果
[AppleScript] 纯文本查看 复制代码
ggplot(data = diamonds, mapping = aes (x = cut, colour = clarity)) + geom_bar(fill = NA, position = "identity")



2. position = "fill"  绘制的图形中,每组堆叠条高度一样。
[AppleScript] 纯文本查看 复制代码
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity), position = "fill")



3. position = "dodge" 对组间进行拆分比较。
[AppleScript] 纯文本查看 复制代码
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")



> 散点图 之 扰动(jitter)。
[AppleScript] 纯文本查看 复制代码
ggplot2::mpg # A tibble: 234 x 11, mpg是234行x11列的数据集

但之前使用geom_point功能画出的散点图仅展示了126个点,这是由于有些点是重叠的情况下图形只展示了一个点,其实是多点重叠在一处。jitter可以使重叠的点散开展示。
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point(mapping = aes(x=displ, y=hwy), position = "jitter")
# ggplot2 comes with a shorthand for geom_point(position = "jitter"), thus the following commands recreate the same plot as above
ggplot(data = mpg) + geom_jitter(mapping = aes(x=displ, y=hwy))
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg) + geom_point(mapping = aes(x=displ, y=hwy), position = "jitter")



3.9 坐标系
  3.9.1 coord_flip() - 翻转xy轴。
[AppleScript] 纯文本查看 复制代码
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + geom_boxplot()

# use coord_flip() to switches the x and y axes
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + geom_boxplot() + coord_flip()




  3.9.2 coord_quickmap() – 设置地图纵横比,对展示空间数据尤为重要。
[AppleScript] 纯文本查看 复制代码
install.packages(“maps”)

library(maps)

nz <- map_data("nz")

ggplot(nz, aes(long, lat, group = group)) +
  geom_polygon(fill = "white", colour = "black")

ggplot(nz, aes(long, lat, group = group)) +
  geom_polygon(fill = "white", colour = "black") +
  coord_quickmap()





  3.9.3 coord_polar() – 极坐标系。
[AppleScript] 纯文本查看 复制代码
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()



3.10 图形构建code模版
[AppleScript] 纯文本查看 复制代码
ggplot(data = <DATA>) + <GEOM_FUNCTION>(mapping = aes (<MAPPINGS>), stat = <STAT>, position = <POSITION>) + <COORDINATE_FUNCTION> + <FACET_FUNCTION>

上述所有参数不是一定全部调用,根据所需指明。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:R数据科学——EDA
下一篇:0923 chapter 5
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-8-19 14:45 , Processed in 0.030501 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.