此时点乃在下载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:数据分析与图形艺术》
网友评论