R语言中值得学习的7个可视化,附代码段&案例数据集

R编程允许开发者通过一组内置的函数和库来构建可视化以描绘数据。 在分享可视化的技术实现之前,首先着眼如何选择合适的图表类型。

选择合适的图表类型

基本呈现类型有四种:

  • Comparison
  • Composition
  • Distribution
  • Relationship

为了确定哪一种与数据匹配,不妨先从以下几个方面考虑:

  • 在一个图表中显示多少变量?
  • 每个变量显示多少数据点?
  • 基于时间显示值,还是在项目或组之间显示值?

下图恰到好处地描述了如何选择合适的图表类型,出自Andrew Abela博士之手。

在日常工作中,大多数会遇到下面列出的7张图表。

  • Scatter Plot
  • Histogram
  • Bar & Stack Bar Chart
  • Box Plot
  • Area Chart
  • Heat Map
  • Correlogram

下面将通过“Big Mart data”示例来了解如何在R中创建可视化,完整数据集可以从这里下载。

下面来了解如何在R中使用这些可视化

1. Scatter Plot

使用场景:Scatter Plot用于查看两个连续变量之间的关系。

在Mart data中,如果想根据它们的成本数据来可视化项目,那么可以使用两个连续变量的散点图,即Item_Visibility和Item_MRP,如下所示。

这里是使用函数ggplot()和geom_point()的简单散点图的R代码。

library(ggplot2)          // ggplot2 is an R library for visualizations train.
ggplot(train, aes(Item_Visibility, Item_MRP)) + geom_point() + scale_x_continuous("Item Visibility", breaks = seq(0,0.35,0.05))+ scale_y_continuous("Item MRP", breaks = seq(0,270,by = 30))+ theme_bw() 

现在,可以在同一个图表中查看第三个变量,比如一个分类变量(Item_Type),它将给出每个数据集的特征(item_type)。 在下面的图表中,item_type的不同颜色表示不同的类别。

R代码加上类别:

ggplot(train, aes(Item_Visibility, Item_MRP)) + geom_point(aes(color = Item_Type)) +
  scale_x_continuous("Item Visibility", breaks = seq(0,0.35,0.05))+
  scale_y_continuous("Item MRP", breaks = seq(0,270,by = 30))+
  theme_bw() + labs(title="Scatterplot")

这里甚至可以通过为每个单独的Item_Type创建单独的散点图,使其更加直观清晰,如下所示。

单独类别图表的R代码:

ggplot(train, aes(Item_Visibility, Item_MRP)) + geom_point(aes(color = Item_Type)) +
  scale_x_continuous("Item Visibility", breaks = seq(0,0.35,0.05))+
  scale_y_continuous("Item MRP", breaks = seq(0,270,by = 30))+
  theme_bw() + labs(title="Scatterplot") + facet_wrap( ~ Item_Type)

在这里,facet_wrap在矩形布局中展示Item_Type。

2. Histogram

使用场景:Histogram用于绘制连续变量。它将数据分成数据仓,并显示这些数据仓的频率分布。这里可以随时改变bin的大小,看看它对可视化的效果。

从Mart data中,如果想了解项目成本计数,那么可以绘制直方图使用连续变量Item_MRP如下所示。

这里是使用函数ggplot()和geom_histogram()的简单直方图的R代码。

ggplot(train, aes(Item_MRP)) + geom_histogram(binwidth = 2)+
  scale_x_continuous("Item MRP", breaks = seq(0,270,by = 30))+
  scale_y_continuous("Count", breaks = seq(0,200,by = 20))+
  labs(title = "Histogram")

3. Bar & Stack Bar Chart

使用场景:当您想要绘制分类变量或连续变量和分类变量的组合时,建议使用Bar Charts。

从这个数据集中,如果想知道在特定年份建立的货币数量,那么条形图将是最合适的选择,如下所示使用变量成立年份。

下面是使用函数ggplot()的单个连续变量的简单条形图的R代码。

ggplot(train, aes(Outlet_Establishment_Year)) + geom_bar(fill = "red")+theme_bw()+
  scale_x_continuous("Establishment Year", breaks = seq(1985,2010)) +
  scale_y_continuous("Count", breaks = seq(0,1500,150)) +
  coord_flip()+ labs(title = "Bar Chart") + theme_gray()

Vertical Bar Chart:

作为变体,可以删除coord_flip()参数以获取上述垂直条形图。

要根据单个条形图上的出口类型(分类变量)知道项目权重(连续变量),请使用以下代码:

ggplot(train, aes(Item_Type, Item_Weight)) + geom_bar(stat = "identity", fill = "darkblue") + scale_x_discrete("Outlet Type")+ scale_y_continuous("Item Weight", breaks = seq(0,15000, by = 500))+ theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) + labs(title = "Bar Chart")

Stacked Bar chart:

Stacked Bar chart是条形图的高级版本,用于可视化分类变量的组合。

在这个数据集中,如果想知道基于分类变量如类型(Outlet Type)和位置(Outlet Location Type)的outlet数,堆栈图将以最有用的方式显示该场景。

下面是通过ggplot()函数实现简单堆叠条形图的R代码。

gplot(train, aes(Outlet_Location_Type, fill = Outlet_Type)) + geom_bar()+
labs(title = "Stacked Bar Chart", x = "Outlet Location Type", y = "Count of Outlets")

4. Box Plot

使用场景:Box Plot用于绘制分类和连续变量的组合。 此图用于可视化数据的扩展和检测异常值。 它显示五个统计上显著的数字——最小值,第25百分位数,中值,第75百分位数和最大值。

从数据集中,如果期望确定每个出口的详细项目销售包括最小,最大和中间数字,Box Plot是可行的。 此外,它还给出了每个出口的项目销售的异常值的值,如下图所示。

黑点是离群值。 异常值检测和删除是成功数据探索的关键步骤。下面是使用函数ggplot()和geom_boxplot的简单框图的R代码。

ggplot(train, aes(Outlet_Identifier, Item_Outlet_Sales)) + geom_boxplot(fill = "red")+
scale_y_continuous("Item Outlet Sales", breaks= seq(0,15000, by=500))+
labs(title = "Box Plot", x = "Outlet Identifier")

5. Area Chart

使用场景:Area Chart用于显示变量或数据集的连续性。它与折线图非常相似,通常用于时间序列图。或者,它也用于绘制连续变量并分析潜在趋势。

在数据集中,当分析项目销售额的趋势时,面积图可以如下图所示。 它显示销售额的销售点数。

这里是简单区域图的R代码,显示项目出口销售的连续性,使用函数ggplot()和geom_area。

ggplot(train, aes(Item_Outlet_Sales)) + geom_area(stat = "bin", bins = 30, fill = "steelblue") + scale_x_continuous(breaks = seq(0,11000,1000))+ labs(title = "Area Chart", x = "Item Outlet Sales", y = "Count") 

6. Heat Map

使用场景:Heat Map使用颜色的强度(密度)来显示二维图像中的两个、三个或多个变量之间的关系。 它允许使用两个维度作为轴和第三个维度用作颜色的强度。

在这个数据集中,如果想知道每个出口的每个项目的成本,就可以使用Heat Map,如下所示使用从mart数据集中的三个变量项目MRP,出口标识符和项目类型。

暗部分表示项目MRP接近50.较亮部分指示项目MRP接近250。这里是使用函数ggplot()的简单热图的R代码。

ggplot(train, aes(Outlet_Identifier, Item_Type))+
  geom_raster(aes(fill = Item_MRP))+
  labs(title ="Heat Map", x = "Outlet Identifier", y = "Item Type")+
  scale_fill_continuous(name = "Item MRP") 

7. Correlogram

使用场景:Correlogram用于测试数据集中可用变量之间的关联程度。矩阵的单元可以被着阴影或着彩色以显示共同关系值。

颜色越深,变量之间的相关性越高。 正相关以蓝色显示,负相关以红色显示。 颜色强度与相关值成正比。

如果检查项目成本、重量、可见性与出口建立年份和出口销售之间的共同关系,如下图所示。

在这个例子中可以看到,物品成本和销售量是正相关的,而物品重量和它的可见度是负相关的。

这里是使用functioncorrgram()的简单自相关图的R代码。

install.packages("corrgram")
library(corrgram)

corrgram(train, order=NULL, panel=panel.shade, text.panel=panel.txt,
           main="Correlogram") 

通过这个教程,相信大家对R编程中使用gplot2库来对数据进行可视化已经有所理解。

原文链接:7 Visualizations You Should Learn in R (作者/Dikesh Jariwala)

时间: 2024-08-03 08:28:36

R语言中值得学习的7个可视化,附代码段&案例数据集的相关文章

R语言中不能进行深度学习?

更多深度文章,请关注:https://yq.aliyun.com/cloud 众所周知,R语言是统计分析最好用的语言.但在Keras和TensorFlow的帮助下,R语言也可以进行深度学习了. 在机器学习的语言的选择上,R和Python之间选择一直是一个有争议的话题.但随着深度学习的爆炸性增长,越来越多的人选择了Python,因为它有一个很大的深度学习库和框架,而R却没有(直到现在). 但是我就是想使用R语言进入深度学习空间,所以我就从Python领域转入到了R领域,继续我的深度学习的研究了.这

《R的极客理想—工具篇》—— 1.1 R是最值得学习的编程语言

1.1 R是最值得学习的编程语言 问题 为什么要学R语言? 引言 如果要问在Node.Lua.Python.Ruby和R这5种语言中,哪个语言在2014年的应用前景会更好,我会毫不犹豫地选择R,而且我认为R语言不仅是2014年,也是以后更长一段时间内的明星.在本书开篇,我们就谈谈为什么R语言是最值得学习的编程语言. 1.1.1 我的编程背景 本人是程序员.架构师,从编程入门到今天,一直深信着Java是改变世界的语言,Java已经做到了,而且一直很辉煌.但当Java越来越强大,覆盖领域越来越多,变

《R的极客理想——高级开发篇 A》一一2.4 R语言中的遗传算法

2.4 R语言中的遗传算法 问题 如何用R语言进行遗传算法的计算? 引言 人类总是在生活中摸索规律,把规律总结为经验,再把经验传给后人,让后人发现更多的规律,每一次知识的传递都是一次进化的过程,最终形成了人类的智慧.自然界的规律,让人类适者生存地活了下来,聪明的科学家又把生物进化的规律,总结成遗传算法,扩展到了更广的领域中.本节将带你走进遗传算法的世界.2.4.1 遗传算法介绍 遗传算法是一种解决最优化的搜索算法,是进化算法的一种.进化算法最初借鉴了达尔文的进化论和孟德尔的遗传学说,从生物进化的

R语言中如何删除数据对象

  R语言中如何删除数据对象 首先需要打开R studio,新建文件脚本,[File]--[New Script]. 然后会发现,global environment这里之前代码留下的数据集非常麻烦,清除方法如下: 首先,写入 rm(A),即可清除相应object的数据(rm=remove).对比即可发现,之前的object已经被清除了. 想要一了百了,全部清除的时候,则输入代码:rm(list=ls()). 这段代码的含义是:清除全部对象,即用ls()列出全部对象名,用一个list将全部对象装

《R语言编程艺术》——1.4 R语言中一些重要的数据结构

1.4 R语言中一些重要的数据结构 R有多种数据结构.本节将简单介绍几种常用的数据结构,使读者在深入细节之前先对R语言有个大概的认识.这样,读者至少可以开始尝试一些很有意义的例子,即使这些例子背后更多的细节还需要过一段时间才能揭晓.1.4.1 向量,R语言中的战斗机 向量类型是R语言的核心.很难想象R语言代码或者R交互式会话可以一点都不涉及向量. 向量的元素必须属于某种"模式"(mode),或者说是数据类型.一个向量可以由三个字符串组成(字符模式),或者由三个整数元素组成(整数模式),

r语言-R语言中关于坐标轴的一些疑问

问题描述 R语言中关于坐标轴的一些疑问 本人初学者,正在根据一些数据用R重现图,但是现在碰到了这样的坐标轴 查了很多资料都没有找到答案,请问用R可以实现这样的坐标轴吗?要用什么函数呢?绘图我都是用plot的,求大神指教 解决方案 http://bbs.pinggu.org/thread-3566469-1-1.html 解决方案二: R语言 备忘录R语言-坐标轴画法要旨

《R的极客理想——高级开发篇 A》一一1.2 R语言中的数学计算

1.2 R语言中的数学计算 问题 如何用R语言进行数学计算? 引言 R语言是统计语言,生来就对数学有良好的支持,用R语言做数学的计算题特别方便.如果计算器中能嵌入R语言的计算函数,那么绝对是一种高科技产品.我真的把R语言当成我的计算器了!1.2.1 基本计算 R语言对数学计算有着非常好的支持,本节将完整介绍初等数学中的各种计算操作. 本节的系统环境是: Windows 7 64bit R: 3.1.1 x86_64-w64-mingw32/x64 (64-bit) 用R语言实现四则运算操作,包括

【学习】 R语言与机器学习学习笔记(1)K-近邻算法

前言 最近在学习数据挖掘,对数据挖掘中的算法比较感兴趣,打算整理分享一下学习情况,顺便利用R来实现一下数据挖掘算法. 数据挖掘里我打算整理的内容有:分类,聚类分析,关联分析,异常检测四大部分.其中分类算法主要介绍:K-近邻算法,决策树算法,朴素贝叶斯算法,支持向量机,神经网络,logistic回归. 写这份学习笔记主要以学校data mining课程的课件为主,会参考一堆的baidu,一堆的google,一堆的blog,一堆的book以及一堆乱七八糟的资料,由于精力有限,恕不能一一列出,如果有认

R语言中的循环函数(Grouping Function)

R语言中有几个常用的函数,可以按组对数据进行处理,apply, lapply, sapply, tapply, mapply,等.这几个函数功能有些类似,下面介绍下这几个函数的用法. Apply 这是对一个Matrix或者Array进行某个维度的运算.其格式是: Apply(数据,维度Index,运算函数,函数的参数) 对于Matrix来说,其维度值为2,第二个参数维度Index中,1表示按行运算,2表示按列运算.下面举一个例子: m<-matrix(1:6,2,3) 构建一个简单的2行3列的矩