博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
全栈 - 15 实战 Diamonds 数据集探索
阅读量:6220 次
发布时间:2019-06-21

本文共 2637 字,大约阅读时间需要 8 分钟。

这是全栈数据工程师养成攻略系列教程的第十五期:15 实战 Diamonds数据集探索。

我们已经掌握了ggplot2的基本语法,接下来以Diamonds数据集为例,结合多种图形进行实战和巩固。

查看数据

新建一个R脚本,加载ggplot2并查看diamonds数据集,diamonds数据框包含53940行,有carat、cut、color、clarity、depth、table、price、x、y、z共10列,对应每个钻石的一些参数值。

# 加载包和数据集library(ggplot2)library(gcookbook)diamonds复制代码

因为数据记录太多不便于展示,所以不妨先截取原始数据的一个子集。使用sample()函数从总行数中随机采样出1000个数,然后作为行索引从原始数据框中截取出采样的行。

# 截取子集set.seed(123)# 从全部行中采样出1000行diamonds <- diamonds[sample(nrow(diamonds), 1000),]复制代码

可以用summary()str()函数查看数据框的一些概要信息。前者根据每列的数据类型,如果为数值型则给出最大值、最小值、均值等统计值,如果为类别型则给出各个水平的频数;后者给出每列的数据类型以及一些样本值。

# 查看数据框的一些概要信息summary(diamonds)str(diamonds)复制代码

可以使用head()tail()函数查看数据框的前几行或最后几行。

# 查看数据框的前几行或最后几行head(diamonds)tail(diamonds)复制代码

价格和克拉

我们知道,钻石越大价格自然越贵,所以首先来看看价格和克拉之间存在怎样的关系。

# 价格和克拉的关系ggplot(diamonds) + geom_point(aes(x=carat, y=price))# 加入color和cut的影响ggplot(diamonds) + geom_point(aes(x=carat, y=price, color=color, shape=cut))复制代码

价格分布

我们再来看看钻石的价格分布情况,由于价格为连续型变量,所以用直方图进行绘制。将price映射到x轴,ggplot2会自动划分若干个区间并统计每个价格区间内的记录数量,因此可以将直方图理解为x轴为连续变量的条形图。

# 价格分布ggplot(diamonds) + geom_histogram(aes(x=price))# 加入cut的影响ggplot(diamonds) + geom_histogram(aes(x=price, fill=cut))# 分组直方图ggplot(diamonds) + geom_histogram(aes(x=price, fill=cut), position="dodge")# 百分比直方图ggplot(diamonds) + geom_histogram(aes(x=price, fill=cut), position="fill")复制代码

纯净度分布

钻石的纯净度clarity为类别型变量,所以使用条形图绘制其分布。将clarity映射到x轴即可,y轴为每个水平下的记录数量。

# 纯净度分布ggplot(diamonds) + geom_bar(aes(x=clarity))# 加入color的影响ggplot(diamonds) + geom_bar(aes(x=clarity, fill=color))复制代码

价格概率分布

使用密度图即可展示连续型变量的概率分布,即某一价格钻石出现的概率。在密度图中,整个概率密度曲线下方区域的面积积分等于1。细心的话可以发现,当直方图的区间无穷小,即区间数量无穷大时,所得的轮廓形状和密度图是相同的。

# 价格的概率分布ggplot(diamonds) + geom_density(aes(x=price))# 加入cut的影响ggplot(diamonds) + geom_density(aes(x=price, color=cut))# 加入color的影响ggplot(diamonds) + geom_density(aes(x=price, color=color))复制代码

不同切工下的价格分布

我们希望了解不同切工下,钻石价格的分布情况,可以使用箱线图实现。cut是一个类别值,映射到x轴;price是一个连续值,映射到y轴。箱线图的“箱”展示了分布的上分位数、平均值和下分位数,“线”展示了分布的最大值和最小值。

# 不同切工下价格的分布ggplot(diamonds) + geom_boxplot(aes(x=cut, y=price))# 加入color的影响ggplot(diamonds) + geom_boxplot(aes(x=cut, y=price, fill=color))复制代码

坐标变换

ggplot2可以对坐标轴进行丰富的坐标轴变换,使得x轴变量和y轴变量之间的关系更直观。例如对以下散点图中的price取对数,只需要加上scale_y_log10()即可。

# 坐标变换ggplot(diamonds) + geom_point(aes(x=carat, y=price, color=color, shape=cut)) + scale_y_log10()复制代码

标题和坐标轴标签

最后,让我们给画好的图加上标题和坐标轴标签,同样直接加上labs()即可,并使用theme()指定所用字体,使得中文能够正常显示。

# 加上标题和坐标轴标签ggplot(diamonds) + geom_point(aes(x=carat, y=price, color=color, shape=cut)) + scale_y_log10() + labs(x='克拉', y='价格', title='克拉和价格之间的关系') + theme(text=element_text(family='Microsoft YaHei'))复制代码

使用theme()可以对绘图中的各处细节进行非常精细的控制和调整,对于任何不满意的地方都可以进行微调,详细使用方法可以参考?theme

视频链接:

如果觉得文章不错,不妨点一下左下方的喜欢~

转载地址:http://dulja.baihongyu.com/

你可能感兴趣的文章
电子书下载:Professional ASP.NET Design Patterns
查看>>
在Linux下使用ipmsg(飞鸽传书)
查看>>
使用Javascript显示时间
查看>>
信号量与线程互斥锁的区别
查看>>
Android控件系列之XML静态资源
查看>>
【C#学习笔记】获得本机IP
查看>>
Azure ARM (17) 基于角色的访问控制 (Role Based Access Control, RBAC) - 自定义Role
查看>>
Windows Mobile下native c++ typeid的使用
查看>>
用ASP.NET写个SQLSERVER的小工具
查看>>
dojo 官方翻译 dojo/string 版本1.10
查看>>
flex for循环
查看>>
生活中的经典感人语句
查看>>
JavaScript常用字符串函数
查看>>
数据交换格式XML和JSON对比
查看>>
强烈推荐Oracle的入门心得
查看>>
POJ 1195 Mobile phones (二维树状数组或线段树)
查看>>
LINUX下使用crontab进行RMAN备份实验
查看>>
Hive文件格式
查看>>
[LeetCode] Delete Node in a Linked List
查看>>
农历js脚本
查看>>