本文的例子是R中内置的钻石数据(diamonds),其中用到的变量包括价格(price),重量(carat)以及某种尺寸指标(depth)。先绘制carat和price之间的散点图来了解二者关系,从下图可见,由于数据量过大,尽管使用了透明度参数,散点仍非常密集。
为了简化数据,我们可以对同一重量的钻石求价格均值,从下图来就简洁了许多。当然另一种简化方法就将carat进行区间分组,然后用箱线图来表现。
如果要同时考虑carat和depth两个变量,我们可以绘制如下的二元直方图。可观察到当carat较低,同时depth在60左右时,数据样本最多。
如果要加入price变量一并考查的话,就需要使用最新的stat_summary2d函数。从下图可观察到carat越大,price越高。而且给定carat条件下,depth在60左右的价格相对较高。
stat_summary2d函数允许将任一个函数值映射到矩形的颜色上,比如说想观察price的变异系数在不同区块的变化情况,我们可以从下图到得直观的显示。
相关代码如下:
# 第一张图,简单的散点图
d <- ggplot(diamonds, aes(x=carat, y=price))
d + geom_point(alpha=0.3,colour='lightskyblue4')
# 第二张图,展示stat_summary的功能
d + stat_summary(fun.y='mean',geom='point',colour='lightskyblue4')
# 第三张图,展示stat_bin2d的功能
d <- ggplot(diamonds, aes(x=carat, y=depth))
d + stat_bin2d()
# 第四张图,展示stat_summary2d的功能
d <- ggplot(diamonds, aes(x=carat, y=depth, z=price))
d + stat_summary2d()
# 第五张图
d + stat_summary2d(fun = function(x) sd(x)/mean(x))
没有评论:
发表评论