数据可视化(图形绘制基础)
一、图形绘制基础,Matplotlib简介,使用过程,sin函数示例
二、常用图形绘制,折线图的绘制
示例
散点图的绘制、scatter()
示例
柱状图的绘制
示例
箱型图绘制
plot.box
示例
饼状图的绘制
pie
示例
三、图形绘制的组合情况
多个折线图的组合绘制
示例
折线图和散点图的组合绘制
示例
柱状图与折线图的组合绘制
示例
四、拓展
热力图
heatmap
改变数据采样频率
resample
示例
创建多个子图
subplots()
调整子图之间的间距
subplots_adjust
决策树
plot_tree

一、前言:

在大数据时代,离不开数据的处理和分析,这次来介绍一下数据可视化,在之后的文章中使用的工具都是Apache ECharts,它是一个基于 JavaScript 的开源可视化图表库。

数据可视化图形绘制是将数据转化为直观图形呈现的关键技艺。它致力于把复杂的数据集合,无论是来自商业运营、科学研究还是社会调查等各个领域,通过精心挑选和构建合适的图形类型,如柱状图、折线图、饼图、散点图等,将数据中的模式、趋势、关系以及分布情况清晰地展现出来。这一过程不仅要求绘制者熟练掌握各类绘图工具与软件的操作,更需要对数据有着深刻的理解与洞察,以确保所绘制图形在准确反映数据本质的基础上,还能以简洁美观、富有逻辑性的视觉形式呈现给受众。它是连接数据世界与人类认知的桥梁,极大地提升了信息传递的效率与效果,为决策制定、知识传播以及进一步的数据分析提供了有力支撑,在当今数据驱动的时代发挥着不可或缺的重要作用。

2. 数据可视化概述
随着移动互联网技术的发展,网络空间的数据量呈现出爆炸式增长。如何从这些数据中快速获取自己想要的信息,并以一种直观、形象甚至交互的方式展现出来?这是数据可视化要解决的核心问题。
从数字可视化到文本可视化,从折线图、条形图、饼图到文字云、地图,从数据可视化分析到可视化平台建设,数据可视化越来越成为企业核心竞争力的一个重要组成部分。
ECharts作为百度推出的一款十分流行的开源免费可视化工具,简单易学、功能强大、计算迅速
来看看Apache ECharts长什么样子

二、图形绘制基础
Matplotlib简介
Matplotlib是目前应用最为广泛的python扩展绘图模块库,是Python中最受欢迎的数据可视化软件包之一。Matplotlib支持跨平台运行,能让使用者很轻松地将数据转化为高质量图形,并且提供了多样化的输出格式,常用于绘制2D图形,同时也提供了一部分3D绘图接口。

Matplotlib提供了类似于MATLAB的绘图函数,对于熟悉MATLAB的使用者来说,可以很容易的使用它。Matplotlib通常与NumPy和pandas扩展包一起使用,最常见的使用方式是根据NumPy库的N维数组类型ndarray来绘制2D图像,使用简单、代码清晰易懂,深受广大技术爱好者的喜爱,是数据分析中不可或缺的重要工具之一。

使用过程
使用pylab或pyplot绘图时一般过程为:首先读入数据,然后根据实际需要绘制折线图、散点图、柱状图、饼状图、雷达图或三维曲线和曲面,接下来设置轴和图形属性,最后显示或保存绘图结果。

1、sin函数示例

请利用python绘制正弦函数曲线。

关键技术:采用MatplotlibPyplot模块的plot函数绘制曲线图。

三、常用图形绘制
折线图的绘制
折线图是最基本的图表类型,是用点和点之间连线的上升或下降表示指标的连续变化趋势。折线图反映了一段时间内事物连续的动态变化规律,适用于描述一个变量随另一个变量变化的趋势,通常用于绘制连续数据,适合数据点较多的情况。

plot
matplotlib是一个用于绘制图形的Python库,其中的plot函数用于绘制线条图。下面是matplotlib中plot函数的详细解释:

参数说明:

x:表示x轴上的数据序列,可以是一个列表、数组或Series类型的数据,也可以是一个数字,此时表示生成从0到该数字的等间隔的数据序列。
y:表示y轴上的数据序列,要求与x轴上的数据序列长度相同。
label:给绘制的线条指定一个标签,可以在绘制图例时使用。
linestyle:线条的样式,可以是实线(‘solid’)、虚线(‘dashed’)、点线(‘dotted’)等,默认为实线。
color:线条的颜色,可以是一个关键字字符串(如’red’、'blue’等),也可以是一个RGB元组表示的颜色(如(0.1, 0.2, 0.3)),默认为蓝色。
linewidth:线条的宽度,可以是一个数字,默认为1。
marker:线条上的标记点的样式,可以是一个关键字字符串(如’+'、‘o’等),也可以是一个标记字符(如’x’、's’等),默认为没有标记点。
使用plot函数可以绘制不同样式的线条图,可以通过设置不同的参数来定制线条的样式、颜色、宽度、标记点等。在绘制完所有的线条后,可以使用plt.legend()函数来添加图例,使得不同线条对应的标签在图中显示出来。

①、例:

根据给定的两组数据xy,分别代表某城镇居民消费水平增长率和对应的年份,利用Python绘制城镇居民消费水平增长率折线图。

关键技术:利用matplotlib包的plot方法进行折线图的绘制。

1、散点图的绘制
散点图是以直角坐标系中各点的密集程度和变化趋势来表示两种现象间的相关关系,常用于显示和比较数值。当要在不考虑时间的情况下比较大量数据点时,使用散点图比较数据方便直观。散点图将序列显示为一组点,其中每个散点值都由该点在图表中的坐标位置表示。对于不同类别的点,则由图表中不同形状或颜色的标记符表示。同时,也可以设置标记符的颜色或大小。

scatter()
scatter是matplotlib库中用于绘制散点图的函数。散点图是一种用于展示两个变量之间关系的图形,其中每个点代表一个数据样本。

scatter函数可以接受一系列的x和y坐标作为输入,然后将这些坐标在图中绘制成散点。

下面是scatter函数的基本用法:

这段代码会生成一个简单的散点图,其中x坐标为1, 2, 3, 4, 5,y坐标为2, 4, 6, 8, 10。

scatter函数还可以接受一些常用的参数,用于调整散点图的样式和外观,例如:

s:设置散点的大小。可以传入一个常数,表示所有散点的大小;也可以传入一个数组,表示每个散点的大小。
c:设置散点的颜色。可以传入一个常数,表示所有散点的颜色;也可以传入一个数组,表示每个散点的颜色。
marker:设置散点的形状。可以传入一个字符,表示所有散点的形状;也可以传入一个数组,表示每个散点的形状。
alpha:设置散点的透明度。

下面是一个示例代码,展示了如何使用这些参数调整散点图的样式:

这段代码会生成一个具有随机数据的散点图,散点的大小为50,颜色为红色,形状为圆形,透明度为0.5。

除了基本的用法和常用参数,scatter函数还有其他一些参数,用于进一步控制散点图的样式和外观,例如:

edgecolors:设置散点边缘的颜色。
linewidths:设置散点边缘的宽度。
cmap:设置颜色映射,用于根据数值变化为散点着色。
norm:设置归一化器,用于归一化数值。
label:设置散点图的标签,用于图例显示。

可以参考Matplotlib官方文档获取更多关于scatter函数的详细说明和示例代码。

示例

对于给定的两个市场收益率的波动情况数据xy,请利用Python绘制散点图来反映两个市场的波动率情况。

关键技术:利用matplotlib包的plot函数进行散点图的绘制,与绘制折线图相比,绘制散点图只用到一组数据,而绘制折线图需要用到两组对应的数据。

2、柱状图的绘制

matplotlibbar函数用于绘制柱状图,它是一个非常常用的数据可视化工具。

下面是bar函数的详细介绍:

语法:

参数:

x:柱状图的x轴位置,可以是一个数值或者一个数组,表示每个柱状图的位置。
height:柱状图的高度,可以是一个数值或者一个数组,表示每个柱状图的高度。
width:柱状图的宽度,默认值为0.8。
bottom:柱状图的底部位置,默认为None,表示从0开始绘制柱状图。
align:柱状图的对齐方式,默认为’center’,表示柱状图的中心与给定位置对齐。
data:传入一个DataFrame或者一个类似结构的数据集,x和height参数可以直接从data中获取。
其他常用参数:

color:柱状图的颜色,可以是一个字符串,表示柱状图颜色的名称,也可以是一个列表,表示每个柱状图的颜色。
edgecolor:柱状图的边框颜色,默认为None,表示不显示边框。
label:柱状图的标签,可以在图例中显示。
tick_label:柱状图的刻度标签,可以在x轴上显示。
alpha:柱状图的透明度,取值范围为0到1。

示例:

此代码将绘制一个简单的柱状图,x轴是0到4,y轴是给定的数组y的值。柱状图的颜色为蓝色,对齐方式为居中。在图像的x轴标签、y轴标签和标题上显示对应的文字。最后调用plt.show()来显示图像。

以上提供了matplotlib的bar函数的详细介绍和一个简单的用例。通过使用不同的参数和组合,您可以根据自己的需求绘制出各种类型的柱状图。

示例

对于给定的2020年9月至2021年3月期间某基金产品发行数量的数据,该数据以字典形式存储,形式如下所示。请利用Python将其以柱状图的形式绘制出来。

关键技术:可以利用Python的matplotlib包的bar方法进行柱状图绘制。

3、箱型图绘制
plot.box
plot.box是matplotlib库中的一个函数,用于绘制箱线图。箱线图是一种统计图表,用于展示一组数据的分布情况。它显示了数据的中位数、上下四分位数、最小值和最大值,以及异常值。

箱线图可以帮助我们了解数据的偏态、离散度和异常值情况。

plot.box的基本语法为:

参数说明:

x:要绘制箱线图的数据,可以是一个一维数组或一个二维数组。
notch:箱线图的缺口,默认为None。
sym:异常值的标记,默认为None。
vert:箱线图的方向,默认为True(垂直方向),设置为False可以绘制水平方向的箱线图。
whis:决定绘制箱线图上下边界的位置,默认为1.5。
boxprops:箱线图的属性设置,包括颜色、线宽等,默认为None。
flierprops:异常值的属性设置,默认为None。
medianprops:中位数的属性设置,默认为None。
meanprops:均值的属性设置,默认为None。
capprops:边界线的属性设置,默认为None。
whiskerprops:whisker的属性设置,默认为None。
manage_xticks:是否自动管理x轴的刻度,默认为True。
autorange:是否自动确定y轴的范围,默认为False。
zorder:图层顺序,默认为None。
除了以上参数,plot.box还可以接受一些其他参数,用于设置标题、坐标轴标签、图例等。详细的参数说明可以参考matplotlib官方文档。

下面是一个简单的示例代码,演示如何使用plot.box绘制箱线图:

运行以上代码,会生成一个简单的箱线图,显示了随机数据的中位数、上下四分位数、最小值和最大值,以及异常值(如果有)。

除了上述的示例代码,plot.box还可以接受一维或二维的数据作为参数,用于绘制多组数据的箱线图。可以通过设置参数来修改箱线图的样式,如颜色、线宽等。此外,还可以使用matplotlib的其他函数和方法来进一步自定义绘图。

示例

下面给定的数据是某公司产品在各个国家用户的消费分布图,请根据以下数据利用Python绘制箱型图。

关键技术:可以利用Python的plot.box绘制箱型图。

4、饼状图的绘制

matplotlib中,可以使用pie函数绘制饼图。饼图用于展示各类别的占比关系,适用于数据的相对比较。下面是使用pie函数绘制饼图的详细步骤和参数说明。

①、导入库:

②、准备数据:

③、绘制饼图:

5、绘制饼图时,主要使用了两个参数:

①sizes:代表各类别的占比值,要求是一个一维数组或列表。
②labels:代表各类别的标签,要求是一个与sizes长度相同的一维数组或列表。可选参数,默认值为None。
除此之外,还可以使用其他一些参数进行饼图的个性化设置,比如:

autopct:控制饼图中百分比的显示方式。可选参数,默认值为None。可以使用字符串格式控制显示,例如'%.1f%%'表示保留一位小数的百分比。
explode:控制各类别之间的间隔。可选参数,默认值为None。可以使用一维数组或列表来指定各类别的偏移量,例如[0, 0.1, 0, 0]表示第二个类别偏移0.1。
colors:控制各类别的颜色。可选参数,默认值为None。可以使用一维数组或列表来指定颜色,例如['red', 'blue', 'green', 'yellow']。
startangle:控制饼图的起始角度,逆时针方向。可选参数,默认值为0。
shadow:控制是否显示阴影。可选参数,默认值为False。
下面是一个综合使用了上述参数的例子:

通过调整上述参数,可以根据具体需求绘制出个性化的饼图。

示例
某公司有A、B、C、D、E五种商品,每种商品占有的市场份额分别为15%、30%、30%、10%和15%,请利用Python的饼状图绘制上述数据的分布图。

关键技术:可以利用Python的matplotlib包中的pie函数绘制饼状图。

四、图形绘制的组合情况
多个折线图的组合绘制
示例
给定时间范围在2009年至2017年间两种商品的市场销售价格增长率数据集data1, data2。请利用Python的折线图将两种商品价格的增长率信息进行绘制,反映到图上。

关键技术:可以利用matplotlib包的plot函数进行多折线图的绘制。

五、折线图和散点图的组合绘制

示例

给定某只股票从2021年12月31日到2022年1月11日的收盘价格,请利用Python的折线图和散点图组合图形式进行数据的绘制。

关键技术:可以利用Python的plot函数进行绘制。

六、柱状图与折线图的组合绘制

示例

已知给定的某股票在2021年12月14日至2021年12月28日的收盘价格和交易量,请利用Python绘制双坐标轴图,其中左坐标轴反映交易量,以柱状图表示;右坐标轴反映成交价格,以折线图表示。

七、拓展
1、热力图
热力图是一种可视化数据的图表方式,通过不同颜色的区块来表示数据的密度或强度。热力图通常用于显示热点、密度分布或者数据趋势。

在热力图中,颜色的深浅表示数据的强度或频率,通常深色表示高强度或高频率,浅色表示低强度或低频率。通过观察热力图的颜色变化,可以直观地发现数据的分布情况或趋势。

热力图可以用于各种领域,例如地理信息系统(GIS)、流量分析、市场研究等。在地理信息系统中,热力图可以用来显示人口密度、空气质量、交通流量等信息。在流量分析中,热力图可以用来显示用户活跃度、点击量等数据。在市场研究中,热力图可以用来显示产品销售热点、用户偏好等信息。

绘制热力图可以使用各种工具和编程语言,例如Python的matplotlib库、R语言的ggplot2包等。这些工具提供了丰富的功能和选项,可以根据具体需求进行定制。

2、heatmap
seaborn是一个基于matplotlib的数据可视化库,它提供了许多简洁而美观的绘图函数。seaborn中的heatmap()函数用于绘制热力图,热力图可以用来可视化矩阵或数据表中数值的大小和分布。

下面是一个使用heatmap()函数绘制热力图的示例代码:

八、结尾

上述代码就是用python来对数据可视化图形的绘制进行一系列的处理、绘制,完成上述要求。

在当今数字化浪潮中,数据海量涌现,但其价值常被复杂表象遮蔽。数据可视化图形绘制,便是那把穿透迷雾的利刃,赋予数据鲜活形象。原始数据如神秘密码,表格与数字令人望而却步,关键信息隐匿难寻。而可视化图形将数据重塑,柱状图如林立高塔,直观比大小;折线图似灵动飘带,尽显变化趋势;饼图若分割圆盘,清晰呈现比例关系;散点图像繁星密布,揭示变量关联。这不仅是技术活,更是艺术创作。精准传递数据同时,需雕琢色彩、布局与标注,让图形兼具美感与清晰,如磁石般吸引目光,使信息直抵人心。于商业战场,助力管理者剖析销售与市场数据,精准决策,抢占先机;在科研天地,助力研究者展示成果,催生新理论,推动学科前行;在社会舞台,让大众透过新闻与统计图表,洞悉万象,理解政策影响与社会动态。如今,我们已在数据可视化图形绘制的奇妙世界中完成了一次深度遨游。当你合上这探索之卷,愿你心中已种下数据可视化的种子,在未来的日子里,它将不断生根发芽。无论是面对商业决策的复杂数据丛林,还是科研探索的未知数据深海,亦或是社会现象的浩瀚数据苍穹,都能自如地运用所学,绘制出震撼人心的可视化图形。让数据不再沉默,让图形成为你洞察世界、传递智慧的有力翅膀,在数据驱动的时代浪潮中,乘风破浪,用可视化的力量书写属于自己的辉煌篇章,开启无尽的数据探索与创新之旅。

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐