1、数据可视化数据可视化数据可视化数据可视化数据可视化 通过图表形式展现数据,帮助用户快速、准确理解信息。准确、快速准确、快速是可视化的关键。 借助于图形化手段,清晰有效地传达与沟通信息同时对数据进行交互分析。数据可视化数据可视化为什么需要? 由于人类大脑在记忆能力的限制,所以我们利用视觉获取的信息量多于感官,在大数据与互联网时代,各机构从传统的流程式管理方式过渡到基于数据的管理方式将会成为必然的趋势,数据可视化能够帮助分析的人对数据有更全面的认识。数据可视化数据可视化 可视化是解决大数据的一种高效的手段。 2009 年,“大数据” 开始才成为互联网技术行业中的热门词汇。对“大数据”进行收集和分析
2、的设想,起初来自于世界著名的管理咨询公司麦肯锡公司;麦肯锡公司看到了各种网络平台记录的个人海量信息具备潜在的商业价值,于是投入大量人力物力进行调研,在 2011 年 6 月发布了关于“大数据”的报告,该报告对“大数据”的影响、关键技术和应用领域等都进行了详尽的分析。麦肯锡的报告得到了金融界的高度重视,而后逐渐受到了各行各业关注。数据可视化数据可视化数据可视化的目的其实就是直观地展现数据,例如让花费数小时甚至更久才能归纳的数据量,转化成一眼就能读懂的指标;通过加减乘除、各类公式权衡计算得到的两组数据差异,在图中颜色敏感、长短大小即能形成对比;数据可视化是一个沟通复杂信息的强大武器。 通过可视化信
3、息,我们的大脑能够更好地抓取和保存有效信息,增加信息的印象。 但如果数据可视化做的较弱,反而会带来负面效果;错误的表达往往会损害数据的传播,完全曲解和误导观察者,所以更需要多维的展现数据,就不仅仅是单一层面。数据可视化数据可视化数据可视化数据可视化 在大数据没有出现之前,已经有很多对数据加以可视化的经典应用,比如股市里的 K 线了,其试图以可视化的目的来发现某些规律,信息可以用多种方法来进行可视化,每种可视化的方法都有着不同的着重点,特别是在大数据时代,当我们打算处理数据时。数据可视化数据可视化数据的特性数据可视化,先要理解数据,再去掌握可视化的方法,这样才能实现高效的数据可视化,下面是常见的
4、数据类型,在设计时,可能会遇到以下集中数据类型:量性:数据是可以计量的,所有的值都是数字离散型:数字类数据可能在有限范围内取值。例如:学员的人数。持续性:数据可以测量,且在有限范围内,例如:年度降水量范围性:数据可以根据编组和分类而分类,例如:产量销售量数据可视化数据可视化 可视化的意义是帮助人更好的分析数据,也就是说他是一种高效的手段。数据可视化数据可视化工具编程语言 R Scala Python Java数据可视化数据可视化比较比较类类 比较类显示值与值之间的不同和相似之处。 使用图形的长度、宽度、位置、面积、角度和颜色来比较数值的大小, 通常用于展示不同分类间的数值对比,不同时间点的数据
5、对比。数据可视化数据可视化柱形图柱状图无法显示数据在一个区间内的连续变化趋势。柱状图描述的是分类数据,回答的是每一个分类中“有多少?”这个问题。数据可视化数据可视化 适合的数据:一个分类数据字段、一个连续数据字段功能:对比分类数据的数值大小数据与图形的映射:分类数据字段映射到横轴的位置 连续数据字段映射到矩形的高度 分类数据也可以设置颜色增强分类的区分度适合的数据条数:不超过 12 条数据数据可视化数据可视化分布类分布类 分布类显示频率,数据分散在一个区间或分组。 使用图形的位置、大小、颜色的渐变程度来表现数据的分布, 通常用于展示连续数据上数值的分布情况。数据可视化数据可视化散点图散点图也叫
6、 X-Y 图,它将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定。数据可视化数据可视化 适合的数据:两个连续数据字段 功能:观察数据的分布情况 数据与图形的映射:两个连续字段分别映射到横轴和纵轴。 适合的数据条数:无限制 备注:可更具实际情况对点的形状进行分类字段的映射。 点的颜色进行分类或连续字段的映射。数据可视化数据可视化占比类占比类 占比类显示同一维度上占比关系。饼图饼图广泛得应用在各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个区块,整个圆饼代表数据的总量,每个区块(圆弧)表示该
7、分类占总体的比例大小,所有区块(圆弧)的加和等于 100%。数据可视化数据可视化 适合的数据:列表:一个分类数据字段、一个连续数据字段功能:对比分类数据的数值大小数据与图形的映射:分类数据字段映射到扇形的颜色 连续数据字段映射到扇形的面积适合的数据条数:不超过 9 条数据数据可视化数据可视化区间类区间类区间类显示同一维度上值的上限和下限之间的差异。 使用图形的大小和位置表示数值的上限和下限,通常用于表示数据在某一个分类(时间点)上的最大值和最小值。数据可视化数据可视化仪表盘仪表盘(Gauge)是一种拟物化的图表,刻度表示度量,指针表示维度,指针角度表示数值。仪表盘图表就像汽车的速度表一样,有一
8、个圆形的表盘及相应的刻度,有一个指针指向当前数值。目前很多的管理报表或报告上都是用这种图表,以直观的表现出某个指标的进度或实际情况。数据可视化数据可视化适合的数据: 一个分类字段,一个连续字段功能:对比分类字段对应的数值大小数据与图形的映射: 指针映射到分类字段, 指针的角度映射连续字段适合的数据条数:小于等于3数据可视化数据可视化趋势类趋势类 趋势类分析数据的变化趋势。 使用图形的位置表现出数据在连续区域上的分布,通常展示数据在连续区域上的大小变化的规律。折线图 折线图用于显示数据在一个连续的时间间隔或者时间跨度上的变化,它的特点是反映事物随时间或有序类别而变化的趋势。数据可视化数据可视化适
9、合的数据:两个连续字段数据,或者一个有序的分类一个连续数据字段功能:观察数据的变化趋势数据与图形的映射:两个连续字段分别映射到横轴和纵轴适合的数据条数:单条线的数据记录数要大于2,但是同一个图上不要超过5条折线数据可视化数据可视化时间时间类类 时间类显示以时间为特定维度的数据。 使用图形的位置表现出数据在时间上的分布,通常用于表现数据在时间维度上的趋势和变化。面积图 面积图又叫区域图。 它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充,这样一个填充区域我们叫做面积,颜色的填充可以更好的突出趋势信息,需要注意的是颜色要带有一定的透明度,透明度可以很好的
10、帮助使用者观察不同序列之间的重叠关系,没有透明度的面积会导致不同序列之间相互遮盖减少可以被观察到的信息。数据可视化数据可视化适合的数据:两个连续字段数据功能:观察数据变化趋势数据与图形的映射:两个连续字段分别映射到横轴和纵轴适合的数据条数:大于两条数据可视化数据可视化地图类地图类 地图类显示地理区域上的数据。 使用地图作为背景,通过图形的位置来表现数据的地理位置, 通常来展示数据在不同地理区域上的分布情况。带气泡的地图 带气泡的地图,其实就是气泡图和地图的结合,我们以地图为背景,在上面绘制气泡。我们将圆(这里我们叫它气泡)展示在一个指定的地理区域内,气泡的面积代表了这个数据的大小。数据可视化数
11、据可视化适合的数据:一个分类字段,一个连续字段功能:对比分类数据的数值大小数据与图形的映射:一个分类字段映射到地图的地理位置和气泡颜色 另一个连续字段映射到气泡大小适合的数据条数:根据实际地理位置信息,无限制其它常见形式气泡图、雷达图、热力图、词云图、数据可视化数据可视化气泡图展示多维度组合数据数据可视化数据可视化雷达图多变量可视化图形数据可视化数据可视化热力图人流预估数据可视化数据可视化词云图关键词展现数据可视化数据可视化用户体验用户视觉 合格的数据可视化是有新闻价值的。也就是说,它要能帮助目标观众更好地理解数据。有些数据可视化,只让我们看到酷炫狂拽的图形,或者密密麻麻的数据。这些就是过于看
12、重艺术性和科学性,而忽略根本目的了。数据可视化数据可视化色彩空间 人类对于颜色感知的方式通常包括三个问题:是什么颜色?深浅如何?明暗如何? 人群中存在一部分人具有视觉缺陷,包括色盲、色弱等。为了帮助他们识别图表,可能需要采取一些特殊方法。 一个好的可视化工程师,必定也是一个好的 UX(用户体验),所以不光要以易读性为目标努力,用户们也要问问自己:这份可视化是给我看的吗?我看的方式是否正确?数据可视化数据可视化 在数据可视化的工程中,在分析中所采取的具体步骤会随着数据集和项目的不同而不同,但在探索数据可视化和数据挖掘时,总体而言应考虑以下四点: 拥有什么数据? 关于数据你想了解什么? 应该使用哪
13、种可视化方式? 你看见了什么,有意义吗?数据可视化数据可视化常见方法 数据采集:在数据采集过程中进行数据分类,根据数据属性和方法去可视化解决问题; 可视化映射:将数据的数值、空间坐标、不同位置数据间的联系等映射为可视化视觉通道的不同元素如标记、位置、形状、大小和颜色; 数据变换和处理:通过去噪,清洗数据、提取数据; 用户验证:数据的正确与否,需要用户的大胆假设和积极验证,反复验证数据的合理性等,从而向公众或者上司展示数据。数据可视化数据可视化 优秀的数据可视化讲究场景应用,结合数据分析逻辑,制定高效决策。好的数据可视化的体验,是通过美好有效的表达更好的分享和传达数据信息。数据可视化给大数据的各
14、种实践落地提供了检验依据,大量枯燥的数据可以通过数据合理的数据可视化实践,得以落地且容易被用户感知。数据可视化数据可视化目前整个数据可视化大致可以分为两个方向:1、注重展示2、注重分析 现有的数据可视化产品已涉猎的领域有:互联网、零售快消、电商、O2O、物流、金融、医疗和教育等众多行业。数据可视化数据可视化图表的基本组成元素 一张图表至少包含:标题、横纵坐标轴、数据系列、数据标签、图例等部分,每一部分都在图表中扮演特定的角色表达特定的信息。数据可视化数据可视化matplotlib matplotlib 是Python可视化程序库的泰斗。经过十几年它任然是Python使用者最常用的画图库。 ma
15、tplotlib 是第一个 Python 可视化程序库,有许多别的程序库都是建立在它的基础上或者直接调用它。比如pandas和Seaborn就是matplotlib的外包,它们能用更少的代码去调用 matplotlib的方法。线图使用 plot()创建带文本标签的线条图。多子图组合图使用 subplot() 函数创建多轴(即子图)。数据可视化数据可视化图片Matplotlib可以使用imshow ()函数显示图像。轮廓线和伪彩色pcolormesh ()函数也可以对二维数组进行着色表示。 contour ()函数是表示对此相同数据的另一种方式。使用imshow()显示CT扫描pcolormes
16、h()和contour()绘制二维数据数据可视化数据可视化直方图hist ()函数自动生成直方图并返回二进制计数或概率。路径可以使用matplotlib.path模块在Matplotlib中添加任意路径。数据可视化数据可视化Streamplotstreamplot ()函数绘制矢量场的流线。 除了简单绘制流线之外,它还允许将流线的颜色和/或线宽映射到单独的参数,例如矢量场的速度或局部强度。三维绘图mplot3d工具包支持简单的3d图形,包括曲面,线框,散点图和条形图。数据可视化数据可视化椭圆图为了支持Phoenix火星飞行任务(使用Matplotlib显示航天器的地面跟踪),Michael D
17、roettboom在Charlie Moad的工作基础上为椭圆弧提供了非常准确的8样条逼近。条形图使用bar()函数制作条形图,其中包括自定义内容。数据可视化数据可视化饼图 pie()函数的作用是:创建饼图。可自动标记区域的百分比,从饼图中心分裂出一个或多个楔形物,以及一个阴影效果。表table()函数的作用是:将文本表添加到坐标轴中。数据可视化数据可视化散点图scatter()函数的作用是:用(可选)大小和颜色参数进行散点图。右图绘制了谷歌的股票价格变化,标记大小反映了交易量和颜色随时间的变化。在这里,alpha属性被用来制作半透明的圆圈标记。GUI窗口Matplotlib具有独立于所用图形
18、用户界面的基本GUI窗口。数据可视化数据可视化填充曲线fill()函数可绘制填充曲线和多边形。日期处理可以为时间序列数据绘制主要和次要刻度以及两种自定义刻度格式。数据可视化数据可视化对数图semilogx() ,semilogy()和loglog()函数简化了对数图的创建。极坐标图polar()函数生成极坐标图。数据可视化数据可视化TeX-notation文本对象图例legend()函数自动生成图例,并带有与MATLAB兼容的图例布局功能。数据可视化数据可视化TEX标记数据可视化数据可视化柱状图、线形图、堆积柱状图柱状图、线形图、堆积柱状图数据可视化数据可视化from from matplot
19、lib.pyplot matplotlib.pyplot import import * *x = x = 1 1, ,2 2, ,3 3, ,4 4, ,5 5, ,6 6 y = y = 3 3, ,4 4, ,6 6, ,7 7, ,3 3, ,2 2 #create new figure#create new figurefigure()figure()# #线线subplot(subplot(2 2, ,3 3, ,1 1) )plot(x,y)plot(x,y)# #柱状图柱状图subplot(subplot(2 2, ,3 3, ,2 2) )bar(x,y)bar(x,y)#
20、#水平柱状图水平柱状图subplot(subplot(2 2, ,3 3, ,3 3) )barh(x,y)barh(x,y)# #叠加柱状图叠加柱状图subplot(subplot(2 2, ,3 3, ,4 4) )bar(x,y)bar(x,y)y1=y1=2 2, ,3 3, ,4 4, ,5 5, ,6 6, ,7 7 bar(x,y1,bar(x,y1,bottombottom=y,=y,colorcolor= =rr) )# #箱线图箱线图subplot(subplot(2 2, ,3 3, ,5 5) )boxplot(x)boxplot(x)# #散点图散点图subplot(
21、subplot(2 2, ,3 3, ,6 6) )scatter(x,y)scatter(x,y)show()show()数据可视化数据可视化数据可视化数据可视化 箱线图和直方图箱线图和直方图数据可视化数据可视化from from matplotlib.pyplot import import *figure()dataset = 1,3,5,7,8,3,4,5,6,7,1,2,34,3,4,4,5,6,3,2,2,3,4,5,6,7,4,3subplot(1,2,1)boxplot(dataset, vert=FalseFalse)subplot(1,2,2)#直方图hist(datase
22、t)show()数据可视化数据可视化 正弦余弦及图标正弦余弦及图标数据可视化数据可视化from from matplotlib.pyplot import import *import import numpy as as npx = np.linspace(-np.pi, np.pi, 256, endpoint=TrueTrue)y = np.cos(x)y1= np.sin(x)plot(x,y)plot(x,y1)#图表名称title(Functions $sin$ and $cos$Functions $sin$ and $cos$)#x,y轴坐标范围xlim(-3,3)ylim(-
23、1,1)#坐标上刻度xticks(-np.pi, -np.pi/2,0,np.pi/2,np.pi, r$-pi$r$-pi$, r$-pi/2$r$-pi/2$, r$0$r$0$, r$+pi/2$r$+pi/2$,r$+pi$r$+pi$)yticks(-1, 0, 1, r$-1$r$-1$,r$0$r$0$,r$+1$ r$+1$ )#网格grid()show()数据可视化数据可视化 设置图表的线型、属性和格式化字符串设置图表的线型、属性和格式化字符串数据可视化数据可视化from from matplotlib.pyplot import import *import import
24、numpy as as npx = np.linspace(-np.pi, np.pi, 256, endpoint=TrueTrue)y = np.cos(x)y1= np.sin(x)#线段颜色,线条风格,线条宽度,线条标记,标记的边缘颜色,标记边缘宽度,标记内颜色,标记大小plot(1,2,c=rr,ls=-,lw=2, marker=DD, mec=gg,mew=2, mfc=bb,ms=30)plot(x,y1)#图表名称title(Functions $sin$ and $cos$Functions $sin$ and $cos$)#x,y轴坐标范围xlim(-3,3)ylim(-
25、1,4)#坐标上刻度xticks(-np.pi, -np.pi/2,0,np.pi/2,np.pi, r$-pi$r$-pi$, r$-pi/2$r$-pi/2$, r$0$r$0$, r$+pi/2$r$+pi/2$,r$+pi$r$+pi$)yticks(-1, 0, 1, r$-1$r$-1$,r$0$r$0$,r$+1$ r$+1$ )grid()show()数据可视化数据可视化 设置刻度、时间刻度标签、网格设置刻度、时间刻度标签、网格数据可视化数据可视化import import matplotlib.pyplot as as mplfrom from pylab import im
26、port *import import datetimeimport import numpy as as npfig = figure()ax = gca()# 时间区间start = datetime.datetime(2017,11,11)stop = datetime.datetime(2017,11,30)delta = datetime.timedelta(days =1)dates = mpl.dates.drange(start,stop,delta)values = np.random.rand(len(dates)ax.plot_date(dates, values, ls
27、=-)date_format = mpl.dates.DateFormatter(%Y-%m-%d%Y-%m-%d)ax.xaxis.set_major_formatter(date_format)fig.autofmt_xdate()show()数据可视化数据可视化 添加图例和注释添加图例和注释数据可视化数据可视化from from matplotlib.pyplot import import *import import numpy as as npx1 = np.random.normal(30, 2,100)plot(x1, label=plotplot)#图例#图标的起始位置,宽度
28、,高度 归一化坐标#loc 可选,为了图标不覆盖图#ncol 图例个数#图例平铺#坐标轴和图例边界之间的间距legend(bbox_to_anchor=(0., 1.02, 1., .102),loc = 4, ncol=1, mode=expandexpand,borderaxespad=0.1)#注解# Import data 注释#(55,30) 要关注的点#xycoords = data 注释和数据使用相同坐标系#xytest 注释的位置#arrowprops注释用的箭头annotate(Import dataImport data, (55,30), xycoords=datadat
29、a,xytext=(5,35), arrowprops=dict(arrowstyle=-)show()数据可视化数据可视化 直方图、饼图直方图、饼图数据可视化数据可视化import import matplotlib.pyplot as as pltimport import numpy as as npmu=100sigma = 15x = np.random.normal(mu, sigma, 10000)ax = plt.gca()ax.hist(x,bins=30, color=gg)ax.set_xlabel(vv)ax.set_ylabel(ff)ax.set_title(r$m
30、athrmHistogram: mu=%d, sigma=%d$ r$mathrmHistogram: mu=%d, sigma=%d$ % (mu,sigma)plt.show()数据可视化数据可视化数据可视化数据可视化from from pylab import import *figure(1, figsize=(6,6)ax = axes(0.1,0.1,0.8,0.8)labels =springspring,summersummer,autumnautumn,winterwinterx=15,30,45,10#explode=(0.1,0.2,0.1,0.1)explode=(0.
31、1,0,0,0)pie(x, explode=explode, labels=labels, autopct=%1.1f%1.1f%, startangle=67)title(rainy days by seasonrainy days by season)show()数据可视化数据可视化 设置坐标轴设置坐标轴数据可视化数据可视化import import matplotlib.pyplot as as pltimport import numpy as as npx = np.linspace(-np.pi, np.pi, 500, endpoint=TrueTrue)y = np.sin(
32、x)plt.plot(x,y)ax = plt.gca()#top bottom left right 四条线段框成的#上下边界颜色ax.spinesrightright.set_color(nonenone)ax.spinestoptop.set_color(rr)#坐标轴位置ax.spinesbottombottom.set_position(datadata, 0)ax.spinesleftleft.set_position(datadata, 0)#坐标轴上刻度位置ax.xaxis.set_ticks_position(bottombottom)ax.yaxis.set_ticks_p
33、osition(leftleft)plt.grid()plt.show()数据可视化数据可视化 误差条形图误差条形图数据可视化数据可视化import import matplotlib.pyplot as as pltimport import numpy as as npx = np.arange(0,10,1)y = np.log(x)xe = 0.1 * np.abs(np.random.randn(len(y)plt.bar(x,y,yerr=xe,width=0.4,align=centercenter, ecolor=rr,color=cyancyan,label=experime
34、rtexperimert)plt.xlabel(xx)plt.ylabel(yy)plt.title(measurementsmeasurements)plt.legend(loc=upper leftupper left) # 这种图例用法更直接plt.show()数据可视化数据可视化 带填充区域的图表带填充区域的图表数据可视化数据可视化import import matplotlib.pyplot as as pltfrom from matplotlib.pyplot import import *import import numpy as as npx = np.arange(0,2
35、,0.01)y1 = np.sin(2*np.pi*x)y2=1.2*np.sin(4*np.pi*x)fig = figure()ax = gca()ax.plot(x,y1,x,y2,color=bb)ax.fill_between(x,y1,y2,where = y2y1, facecolor=gg,interpolate=TrueTrue)ax.fill_between(x,y1,y2,where = y2y1, facecolor=darkbluedarkblue,interpolate=TrueTrue)ax.set_title(filled betweenfilled betwe
36、en)show()数据可视化数据可视化 散点图散点图数据可视化数据可视化import import matplotlib.pyplot as as pltimport import numpy as as npx = np.random.randn(1000)y1 = np.random.randn(len(x)y2 = 1.8 + np.exp(x)ax1 = plt.subplot(1,2,1)ax1.scatter(x,y1,color=rr,alpha=.3,edgecolors=whitewhite,label=no correlno correl)plt.xlabel(no cor
37、relationno correlation)plt.grid(TrueTrue)plt.legend()ax1 = plt.subplot(1,2,2)#alpha透明度 edgecolors边缘颜色 label图例(结合legend使用)plt.scatter(x,y2,color=gg,alpha=.3,edgecolors=graygray,label=correlcorrel)plt.xlabel(correlationcorrelation)plt.grid(TrueTrue)plt.legend()plt.show()p 经常不断地学习,你就什么都知道。你知道得越多,你就越有力量p Study Constantly, And You Will Know Everything. The More You Know, The More Powerful You Will Be写在最后Thank You在别人的演说中思考,在自己的故事里成长Thinking In Other PeopleS Speeches,Growing Up In Your Own Story讲师:XXXXXX XX年XX月XX日