绘图——工具箱

2017-12-27  本文已影响45人  Stone_Stan4d

此时点乃在下载ubuntu17.0版本的镜像,文件比较大,网速如龟爬。插空学习一下ggplot2

1 揭示不确定性

目的是展示数据中的不确定性的信息。

变量X类型 仅展示区间 同时展示区间和中间值
连续型 geom_ribbon geom_smooth(stat = "identity")
离散型 geom_errorbar geom_crossbar
geom_linerange geom_pointrange

代码如下:

library(ggplot2)
d <- subset(diamonds, carat < 2.5 & rbinom(nrow(diamonds), 1, 0.2) == 1)
d$lcarat <- -log10(d$carat)
d$lprice <- -log10(d$price)

detrend <- lm(lprice ~ lcarat, data = d)
d$lprice2 <- resid(detrend)

mod <- lm(lprice2 ~ lcarat * color, data = d)

library(effects)
effectdf <- function(...){
  suppressWarnings(as.data.frame(effect(...)))
}
color <- effectdf("color", mod)
both1 <- effectdf("lcarat:color", mod)

carat <- effectdf("lcarat", mod, default.levels = 50)
both2 <- effectdf("lcarat:color", mod, default.levels = 3)

qplot(lcarat, lprice, data = d, colour = color) #图1a
qplot(lcarat, lprice2, data = d, colour = color)#图b

图1a,对数分布图:价格-克拉值 图1b:对数价格残差-克拉值

下面图2展示了模型评估结果中变量color的不确定性。左图为color的边际效应,右图是针对carat的不同水平(level),变量color的条件效应,误差棒显示了95%的逐点置信区间。
代码如下:

fplot <- ggplot(mapping = aes(y = fit, ymin = lower, ymax = upper))+
  ylim(range(both2$lower, both2$upper))
fplot %+% color + aes(x = color) + geom_point() + geom_errorbar()

fplot %+% both2 + 
  aes(x = color, colour = lcarat, group = interaction(color, lcarat))+
  geom_errorbar() + geom_line(aes(group = lcarat))+
  scale_colour_gradient()

图2a 图2b
图3a 图3b

上图3展示模型估计结果中变量carat的不确定性。上左图为carat的边际效应,上右图则是针对变量color的不同水平,变量carat的条件效应。误差带显示了95%的逐点置信区间。

2.统计摘要

对于每个x的取值,计算对应y值的统计摘要通常是很有用的。在ggplot2中,这一角色由stat_summary()但当,它使用ymin,y和ymax等图形属性,为汇总y的条件分布提供了一种灵活的方法。

2.1单独的统计摘要函数

参数fun.y,fun.ymin和fun.ymax能够接受简单的数值型摘要计算函数,即该函数能够传入一个数据向量并返回一个数值型结果,如:mean(),median(),min(),max().

2.2统一的摘要计算函数

fun.data可以支持更复杂的摘要计算函数,当然也可以使用自己编写的摘要计算函数:如下,此函数应返回一个各元素有名称的向量作为输出。

3.添加图形注解

在使用额外的标签注解时,要记住的重要一点:这些注解仅仅是额外的数据而已。添加图形注解有两种方式:逐个添加或者批量添加。

下面的例子,我们分别以两种方式,向经济数据中加入有关美国总统的信息。

unemp <- qplot(date,unemploy,data=economics,geom="line",
   xlab="",ylab="No.unemployed(1000s)"))
presidential <- presidential[-(1:3),]
yrng <- range(economics$unemploy)
xrng <- range(economics$date)
unemp + geom_vline(aes(xintercept = as.numeric(start)),data=presidential)

unemp+geom_rect(aes(NULL, NULL, xmin = start, xmax = end, fill = party), ymin = yrng[1], 
                ymax = yrng[2], data = presidential, alpha = 0.2)+
  scale_fill_manual(values = c("blue", "red"))
last_plot() + geom_text(aes(x = start, y = yrng[1], label = name), data = presidential,
                        size = 3, hjust = 0, vjust = 0)

图4a 图4b
图5a 图5b
caption <- paste(strwrap("Unemployment rates in the US have varied a lot over the 
                         years", 40), collapse = "\n")
unemp + geom_text(aes(x, y, label = caption), data = data.frame(x = xrng[2], 
                                                                y = yrng[2]),
                  hjust = 1, vjust = 0, size = 4)

highest <- subset(economics, unemploy == max(unemploy))
unemp + geom_point(data = highest, size = 3, colour = "red", alpha = 0.5)
图6a 图6b

以上资料来源于《ggplot2:数据分析与图形艺术》

上一篇下一篇

猜你喜欢

热点阅读