Python数据可视化--Matplotlib--入门

简介: Python数据可视化--Matplotlib--入门

Matplotlib介绍

1. Matplotlib 是 Python 中常用的 2D 绘图库,它能轻松地将数据进行可视化,作出精美的图表。


2. Matplotlib 这个模块很庞大,最常用的是其中一个子模块——pyplot 。


import matplotlib.pyplot as plt

pyplot模块

1. pyplot 中最基础的作图方式是以点作图,即给出每个点的坐标,pyplot 会将这些点在坐标系中画出,并用线将这些点连起来。

import numpy as np
import matplotlib.pyplot as plt
 
x=np.arange(0,2*np.pi,0.1) 
# 生成一个从 0 到 2π 的数组,步长是 0.1。
y=np.sin(x) 
# numpy 中计算正弦函数的方法,我们将 x 的值传进去就得到对应的正弦值。
plt.plot(x,y) 
#有了 x 和 y 的值之后,将其分别传入 plt.plot() 方法,pyplot 会将其转换成对应的坐标。
plt.show()
# 将这些坐标连成线就得到了函数的图像,最后调用 plt.show() 方法就能将图像显示出来了。

2. 其实对于每一对 x 和 y,还有一个可选的格式化参数,用来指定线条的颜色、点标记和线条的类型。

import numpy as np
import matplotlib.pyplot as plt
# 设置字体为黑体,防止报错
plt.rcParams['font.family'] = ['SimHei']
# 生成对应数组
x = np.arange(0, 2 * np.pi, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)
# 生成对应函数
plt.plot(x, y1, 'ro--')  # 正弦函数图像
plt.plot(x, y2, 'b*-.')  # 余弦函数图像
# 等价于 plt.plot(x, y1, 'ro--', x, y2, 'b*-.')
plt.show()

呈现图分类

1. 按照数据展示的目标可以把它们分为五种,分别是:趋势、比较、构成、分布和联系。


2. 趋势:这是最常见的一种时间序列关系,关心数据如何随着时间变化,趋势类里的图表能直观反映出每年、每月、每天的变化趋势,增长、减少、上下波动还是基本不变。最常见的是折线图,它能很好地表现指标随时间呈现的趋势。


3. 构成:主要关注每个部分占整体的比例。展示构成关系的图表类型里,最常见的就是饼壮图。


4. 比较:可以展示某个维度上的排列顺序,分析某维度之间的对比是差不多,还是 “大于”、“小于”,


5. 分布:当你关心数据集中、频率、分布时,比如根据地理位置数据,通过地图来展示不同分布特征。比较常用的图表有地图、直方图、散点图。


6. 联系:主要查看两个变量之间是否表达出我们预期所要证明的相关关系。


绘制折线图

1. plt.rcParams['font.family'] = ['SimHei'],再绘图之前先把字体设置成黑体,防止报错。


2. 加图例很简单,只要在调用 plt.plot() 方法时传入 lable 参数,接着用 plt.legend() 方法显示图例即可。

import matplotlib.pyplot as plt
 
x = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
y1 = [61, 42, 52, 72, 86, 91, 73]
y2 = [23, 26, 67, 38, 46, 55, 33]
# 修改字体
plt.rcParams['font.family'] = ['SimHei']
# 传入 label 参数
plt.plot(x, y1, label='商品 A')
plt.plot(x, y2, label='商品 B')
# 显示图例
plt.legend()
# 绘制图片
plt.show()


1. 如果想自行选择图例位置的话可以通过 plt.legend() 方法的 loc 参数实现。


2. 我们还可以通过 plt.xlable() 和 plt.ylable() 方法来设置 x 轴和 y 轴的标签.


3. 还能通过 plt.title() 给图表设置标题。


plt.legend(loc='lower right')
# 设置 x 轴标签
plt.xlabel('时间')
# 设置 y 轴标签
plt.ylabel('销量')
# 设置图表标题
plt.title('商品销量对比图')

绘制柱状图

普通柱状图

1. 调用 plt.bar() 方法即可,我们需要传入两个参数。


2. 第一个参数是 x 轴上刻度的标签序列。


3. 第二个参数则用于指定每个柱子的高度,也就是具体的数据。


4.  plt.bar() 还有一些可选参数,常用的有 width 和 color,分别用于设置柱子的宽度和颜色。

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['SimHei']
names = ['篮球', '羽毛球', '乒乓球']
nums = [26, 20, 19]
plt.bar(names, nums, width=0.6, color='skyblue')
plt.show()

堆叠柱状图

1. 堆叠柱状图不仅可以展示每一个分类的总量,还能展示该分类包含的每个小分类的大小及占比,因此非常适合处理部分与整体的关系。


2. 多调用了一次 plt.bar() 方法,并传入了 bottom 参数。每调用一次 plt.bar() 方法就会画出对应的柱状图,而 bottom  参数作用就是控制柱状图低端的位置。


import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['SimHei']
 
names = ['篮球', '羽毛球', '乒乓球']
nums_boy = [16, 5, 11]
nums_girl = [10, 15, 8]
 
plt.bar(names, nums_boy, width=0.6, color='skyblue', label='男')
plt.bar(names, nums_girl, bottom=nums_boy, width=0.6, color='pink', label='女')
plt.legend()
plt.show()

分组柱状图

1. 分组柱状图经常用于不同组间数据的比较,这些组都包含了相同分类的数据。


2. 首先使用 np.arange(3) 方法创建了一个数组 x,值为 [ 0 1 2 ],并定义了一个变量 width 用于指定柱子的宽度。


3. 在调用 plt.bar() 时,第一个参数不再是刻度上的标签,而是对应的刻度。以 [ 0 1 2 ] 为基准,分别加上和减去柱子的宽度得到 [-0.15 0.85 1.85] 和 [0.15 1.15 2.15],这些刻度将分别作为两组柱子的中点,并且柱子的宽度为 0.3。


4. 因此,我们还要调用 plt.xticks() 方法来将 x 轴上刻度改成对应的标签。该方法的第一个参数是要更改的刻度序列,第二个参数是与之对应的标签序列。

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['SimHei']
x = np.arange(3)
width = 0.3
 
names = ['篮球', '羽毛球', '乒乓球']
nums_boy = [16, 5, 11]
nums_girl = [10, 15, 8]
 
plt.bar(x - width / 2, nums_boy, width=width, color='skyblue', label='男')
plt.bar(x + width / 2, nums_girl, width=width, color='pink', label='女')
plt.xticks(x, names)
plt.legend()
plt.show()

饼图

1. 饼图用于表示不同分类的占比情况,通过弧度大小来对比各种分类。


2. 饼图的画法很简单,只要传入数据和对应的标签给 plt.pie() 方法即可。但为了让饼图更加直观清晰,需要了解一些额外的参数:参数 autopct 则给饼图自动添加百分比显示。


3. 还能通过 explode 参数来让饼图中的某一部分突出显示,来强调某项数据。


4. 默认 explode 参数里的元素都是 0,我们将需要突出显示的部分对应位置的值设大一点,就能将对应的区块抽离出来突出显示。这个数值越大,抽离的效果就越明显。

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['SimHei']
 
data = [64745.2, 364835.2, 489700.8]
labels = ['第一产业', '第二产业', '第三产业']
explode = (0.1, 0, 0)
 
plt.pie(data, explode=explode, labels=labels, autopct='%0.1f%%')
plt.show()

致谢

感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

相关文章
|
19天前
|
人工智能 数据可视化 数据挖掘
如何使用Python进行数据可视化
Python是一种强大的编程语言,广泛应用于数据分析与可视化。常见的可视化库有Matplotlib、Seaborn和Plotly等。数据可视化通常包括以下步骤:准备数据(如列表或从文件读取)、选择合适的工具、绘制图表、优化样式(如标题和标签)以及保存或分享结果。例如,使用Matplotlib可通过简单代码绘制线图并添加标题和轴标签。实际应用中,可通过调整颜色、样式等进一步优化图表,甚至使用交互式工具提升效果。总之,Python的丰富工具为数据可视化提供了强大支持。
|
1月前
|
数据管理 开发者 Python
揭秘Python的__init__.py:从入门到精通的包管理艺术
__init__.py是Python包管理中的核心文件,既是包的身份标识,也是模块化设计的关键。本文从其历史演进、核心功能(如初始化、模块曝光控制和延迟加载)、高级应用场景(如兼容性适配、类型提示和插件架构)到最佳实践与常见陷阱,全面解析了__init__.py的作用与使用技巧。通过合理设计,开发者可构建优雅高效的包结构,助力Python代码质量提升。
110 10
|
2月前
|
数据采集 数据可视化 大数据
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
89 6
|
2月前
|
数据可视化 流计算 Python
Python创意爱心代码大全:从入门到高级的7种实现方式
本文分享了7种用Python实现爱心效果的方法,从简单的字符画到复杂的3D动画,涵盖多种技术和库。内容包括:基础字符爱心(一行代码实现)、Turtle动态绘图、Matplotlib数学函数绘图、3D旋转爱心、Pygame跳动动画、ASCII艺术终端显示以及Tkinter交互式GUI应用。每种方法各具特色,适合不同技术水平的读者学习和实践,是表达创意与心意的绝佳工具。
1074 0
|
4月前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
4月前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
3月前
|
数据采集 人工智能 数据挖掘
Python 编程基础与实战:从入门到精通
本文介绍Python编程语言,涵盖基础语法、进阶特性及实战项目。从变量、数据类型、运算符、控制结构到函数、列表、字典等基础知识,再到列表推导式、生成器、装饰器和面向对象编程等高级特性,逐步深入。同时,通过简单计算器和Web爬虫两个实战项目,帮助读者掌握Python的应用技巧。最后,提供进一步学习资源,助你在Python编程领域不断进步。
|
数据可视化 Python
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码
406 0
【python】使用matplotlib绘图使刻度线向内
成功使用代码实现matplotlib绘制的图刻度线朝内
【python】使用matplotlib绘图使刻度线向内
|
数据可视化 Python
【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
587 0

热门文章

最新文章

推荐镜像

更多