【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码

简介: 【100天精通Python】Day62:Python可视化_Matplotlib绘图基础,绘制折线图、散点图、柱状图、直方图和饼图,以及自定义图标外观和功能,示例+代码

1 Matplotlib入门

Matplotlib是一个强大的Python绘图库,用于创建各种类型的图表和可视化。以下是Matplotlib的入门指南,包括安装、导入、基本概念、绘图过程、基本图表类型以及图表装饰的示例。

1.1 安装和导入Matplotlib库

首先,您需要确保已经安装了Matplotlib库。您可以使用以下命令通过pip安装:

pip install matplotlib

一旦安装完成,您可以在Python中导入Matplotlib:

import matplotlib.pyplot as plt

1.2 基本概念和背景介绍

在Matplotlib中,有三个关键概念:

  1. Figure(图):Figure是绘图的整个窗口或画布,可以包含多个Axes。您可以将Figure看作一个空白的画布。
  2. Axes(坐标轴):Axes是实际的绘图区域,可以理解为在Figure上创建的子图。每个Axes都包含一个或多个图表元素,如折线图、散点图等。
  3. Subplots(子图):Subplots是一种特殊类型的Axes,它们允许将多个Axes排列在一个Figure中,以创建多个子图。

1.3 绘图过程和流程

绘制图表的一般流程如下:

  1. 创建一个Figure对象,可以使用plt.figure()来完成。
  2. 在Figure中创建一个或多个Axes对象,可以使用fig.add_subplot()plt.subplots()来创建。
  3. 在Axes对象中绘制所需的图表。
  4. 可选地添加标题、标签、图例等装饰。
  5. 显示图表或保存为图像文件。

2 基本图表类型

基本图表类型包括折线图、散点图、柱状图、直方图和饼图示例。

2.1 折线图(Line Plot)

import matplotlib.pyplot as plt
import numpy as np
# 创建示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制线图
plt.figure(figsize=(8, 4))
plt.plot(x, y1, label='Sine Function', color='blue', linestyle='--')
plt.plot(x, y2, label='Cosine Function', color='red', linestyle='-')
plt.title('Line Plot Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.grid(True)
plt.show()

运行:

2.2 散点图(Scatter Plot)

import matplotlib.pyplot as plt
import numpy as np
# 创建示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制散点图
plt.figure(figsize=(6, 6))
plt.scatter(x, y1, label='Sine Data', color='green', marker='o', s=30)
plt.scatter(x, y2, label='Cosine Data', color='blue', marker='x', s=30)
plt.title('Scatter Plot Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.grid(True)
plt.show()

运行:

2.3 柱状图(Bar Chart)

import matplotlib.pyplot as plt
# 示例数据
categories = ['Category A', 'Category B', 'Category C', 'Category D', 'Category E']
data = [3, 5, 2, 7, 8]
# 绘制柱状图
plt.figure(figsize=(8, 4))
plt.bar(categories, data, color=['red', 'blue', 'green', 'purple', 'orange'])
plt.title('Bar Chart Example')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.grid(axis='y')
plt.show()

运行:

2.4 直方图(Histogram)

import matplotlib.pyplot as plt
import numpy as np
# 创建随机示例数据
data = np.random.randn(1000)
# 绘制直方图
plt.figure(figsize=(8, 4))
plt.hist(data, bins=20, color='skyblue', edgecolor='black')
plt.title('Histogram Example')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.grid(axis='y')
plt.show()

运行:

2.5 饼图(Pie Chart)

import matplotlib.pyplot as plt
# 示例数据
sizes = [15, 30, 45, 10]
labels = ['Category A', 'Category B', 'Category C', 'Category D']
colors = ['red', 'blue', 'green', 'orange']
# 绘制饼图
plt.figure(figsize=(6, 6))
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.title('Pie Chart Example')
plt.show()

3  图表装饰

标题、标签和图例,坐标轴和刻度 、网格线 图表样式设置。

当使用Matplotlib自定义图标外观和功能时,可以通过一些参数来实现这些自定义。

3.1 更改线的颜色和样式

  • color: 指定线的颜色,例如 color='red'
  • linestyle: 指定线的样式,例如 linestyle='--' 表示虚线。
  • linewidth: 指定线的宽度,例如 linewidth=2 表示线宽为2。
  • alpha: 指定线的不透明度,取值范围为0到1。
plt.plot(x, y, color='red', linestyle='--', linewidth=2, alpha=0.7)

3.2 添加标记和线宽

  • marker: 指定标记的类型,例如 'o' 表示圆点。
  • markersize: 指定标记的大小。
  • markerfacecolor: 指定标记的填充颜色。
  • markeredgecolor: 指定标记的边缘颜色。
plt.plot(x, y, marker='o', markersize=5, markerfacecolor='blue', markeredgecolor='black', linewidth=2)

3.3 设置标题和标签

  • title: 设置图表标题。
  • xlabelylabel: 设置X轴和Y轴的标签。
  • 可以使用参数如 fontsizefontweightfontstylefontfamily 来调整字体样式。
plt.title('My Plot', fontsize=16, fontweight='bold') 
plt.xlabel('X-axis', fontsize=12, fontstyle='italic') 
plt.ylabel('Y-axis', fontsize=12, fontfamily='serif')

3.4 添加图例

  • legend: 添加图例。
  • loc: 指定图例的位置,例如 'upper right'
  • fontsize: 设置图例文字的字体大小。
  • title: 设置图例标题。
plt.legend(['Data1', 'Data2'], loc='upper right', fontsize=12, title='Legend') 

3.5 绘制网格线

1. grid: 添加网格线。

2. linestyle: 设置网格线的样式。

3. alpha: 设置网格线的不透明度。

4. which: 设置要绘制网格线的刻度,例如 'both'

5. axis: 设置要绘制网格线的轴,例如 'both'

plt.grid(True, linestyle='--', alpha=0.5, which='both', axis='both')

3.6 设置刻度标签

1. xticksyticks: 设置X轴和Y轴的刻度标签。

2. rotation: 旋转刻度标签的角度。

plt.xticks([0, 1, 2, 3, 4], ['Zero', 'One', 'Two', 'Three', 'Four'], fontsize=10, rotation=45)
plt.yticks(fontsize=10)

3.7 添加注释

1. annotate: 添加注释文本。

2. xy: 指定注释的位置。

3. xytext: 指定注释文本的位置。

4.arrowprops: 设置注释的箭头样式。

plt.annotate('Important Point', xy=(2, 3), xytext=(3, 4), fontsize=12, arrowprops=dict(facecolor='black', shrink=0.05, width=1.5, headwidth=8))

3.8 更改坐标轴范围

xlimylim: 设置X轴和Y轴的范围。

plt.xlim(0, 10) 
plt.ylim(-1, 1)

3.9 更改坐标轴刻度

xticksyticks: 设置X轴和Y轴的刻度位置和标签。

plt.xticks(np.arange(0, 11, 2), ['Zero', 'One', 'Two', 'Three', 'Four'], fontsize=10)
plt.yticks(fontsize=10)

3.10 更改颜色映射和颜色栏

scattercolorbar: 绘制散点图并添加颜色栏。

sc = plt.scatter(x, y, c=z, cmap='viridis', s=50, alpha=0.7) 
plt.colorbar(sc, label='Color Bar', orientation='vertical'

3.11 设置图表的尺寸和背景色

plt.figure(figsize=(8, 6), facecolor='lightgray')

       使用figsize参数设置图表的尺寸,以元组形式指定宽度和高度(单位为英寸)。使用facecolor参数设置图表的背景色。

4 扩展示例

示例一:Matplotlib自定义折线图示例 - 外观和功能定制

import matplotlib.pyplot as plt
import numpy as np
# 创建示例数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# 创建一个图形对象,设置图形大小
plt.figure(figsize=(8, 4))
# 绘制第一个线图
plt.plot(x, y1, label='Sine Function', color='blue', linestyle='--', marker='o', markersize=5, linewidth=2)
# 绘制第二个线图
plt.plot(x, y2, label='Cosine Function', color='red', linestyle='-', marker='s', markersize=5, linewidth=2)
# 添加标题和轴标签
plt.title('Customized Line Plot', fontsize=16, fontweight='bold')
plt.xlabel('X-axis', fontsize=12)
plt.ylabel('Y-axis', fontsize=12)
# 添加图例并设置位置
plt.legend(loc='upper right', fontsize=12)
# 添加网格线
plt.grid(True, linestyle='--', alpha=0.5)
# 自定义X轴刻度标签
plt.xticks(np.arange(0, 11, 2), ['Zero', 'Two', 'Four', 'Six', 'Eight', 'Ten'], fontsize=10)
# 自定义Y轴刻度标签
plt.yticks(fontsize=10)
# 添加注释
plt.annotate('Important Point', xy=(2, 0), xytext=(4, 0.5),
             arrowprops=dict(facecolor='black', shrink=0.05),
             fontsize=12, bbox=dict(boxstyle='round,pad=0.3', edgecolor='black', facecolor='yellow'))
# 显示图形
plt.show()

 示例二:Matplotlib散点图示例 - 自定义外观和功能

import matplotlib.pyplot as plt
import numpy as np
# 创建示例数据
x = np.random.rand(50)  # 生成随机的X坐标数据
y = np.random.rand(50)  # 生成随机的Y坐标数据
colors = np.random.rand(50)  # 生成随机颜色
# 绘制散点图
plt.figure(figsize=(8, 6))  # 设置图表大小
plt.scatter(x, y, c=colors, cmap='viridis', s=100, alpha=0.7, label='Data Points')  # 绘制散点图
# 添加图表装饰
plt.title('Scatter Plot Example')  # 设置标题
plt.xlabel('X-axis')  # 设置X轴标签
plt.ylabel('Y-axis')  # 设置Y轴标签
plt.legend()  # 添加图例
plt.grid(True, linestyle='--', alpha=0.5)  # 添加网格线
# 添加颜色栏
sc = plt.scatter(x, y, c=colors, cmap='viridis', s=100, alpha=0.7)
plt.colorbar(sc, label='Color Bar', orientation='vertical')
# 显示图表
plt.show()

示例中的详细说明:

  1. 创建示例数据:通过np.random.rand()生成随机的X坐标数据和Y坐标数据,以及随机的颜色数据。
  2. 绘制散点图:使用plt.scatter()函数绘制散点图。参数包括X坐标数据x,Y坐标数据y,颜色数据colors,颜色映射cmap,标记大小s,透明度alpha和图例label
  3. 图表装饰:使用plt.title()设置标题,plt.xlabel()plt.ylabel()设置轴标签,plt.legend()添加图例,plt.grid()添加网格线。
  4. 添加颜色栏:使用plt.colorbar()添加颜色栏,可以通过label参数设置颜色栏标题,orientation参数设置颜色栏的方向。
  5. 显示图表:使用plt.show()显示图表。

这个示例演示了如何创建散点图并自定义其外观和功能,包括颜色映射和颜色栏。您可以根据实际需求调整参数以创建不同样式的散点图。

目录
相关文章
|
JSON API 数据格式
洋码头商品 API 示例指南(Python 实现)
洋码头是国内知名跨境电商平台,提供商品搜索、详情、分类等API接口。本文详解了使用Python调用这些API的流程与代码示例,涵盖签名生成、请求处理及常见问题解决方案,适用于构建选品工具、价格监控等跨境电商应用。
|
缓存 JSON API
VIN车辆识别码查询车五项 API 实践指南:让每一俩车有迹可循(Python代码示例)
VIN(车辆识别代码)是全球唯一的17位汽车标识码,可快速获取车架号、发动机号、品牌型号等核心信息。在二手车交易、保险理赔、维修保养等场景中,准确解析VIN有助于提升效率与风控能力。本文介绍VIN码结构、适用场景,并提供Python调用示例及优化建议,助力企业实现车辆信息自动化核验。
1738 1
|
JSON 缓存 API
身份证二要素核验接口调用指南 —— Python 示例
本文介绍如何在 Python 中快速实现身份证二要素核验功能,适用于用户注册、金融风控等场景。通过阿里云市场提供的接口,可校验「姓名 + 身份证号」的一致性,并获取性别、生日、籍贯等信息。示例代码展示了从环境变量读取 APP_CODE、发送 GET 请求到解析 JSON 响应的完整流程。关键字段包括 code(1-一致,2-不一致,3-无记录)、msg 和 data。常见问题如 403 错误需检查 AppCode,超时则优化网络或设置重试机制。集成后可根据业务需求添加缓存、限流等功能提升性能。
1203 4
|
JSON API UED
运营商二要素验证 API:核验身份的一致性技术实践(Python示例)
随着线上业务快速发展,远程身份核验需求激增。运营商二要素验证API通过对接三大运营商实名数据,实现姓名、手机号、身份证号的一致性校验,具备权威性高、实时性强的优势,广泛应用于金融、电商、政务等领域。该接口支持高并发、低延迟调用,结合Python示例可快速集成,有效提升身份认证的安全性与效率。
1180 0
|
JSON API 数据格式
Python采集京东商品评论API接口示例,json数据返回
下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析
|
XML JSON API
淘宝商品详情API的调用流程(python请求示例以及json数据示例返回参考)
JSON数据示例:需要提供一个结构化的示例,展示商品详情可能包含的字段,如商品标题、价格、库存、描述、图片链接、卖家信息等。考虑到稳定性,示例应基于淘宝开放平台的标准响应格式。
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
1082 77
|
测试技术 API 开发者
淘宝关键词搜索商品列表API接入指南(含Python示例)
淘宝关键词搜索商品列表API是淘宝开放平台的核心接口,支持通过关键词检索商品,适用于比价、选品、市场分析等场景。接口提供丰富的筛选与排序功能,返回结构化数据,含商品ID、标题、价格、销量等信息。开发者可使用Python调用,需注意频率限制与错误处理,建议先在沙箱环境测试。
|
数据采集 索引 Python
Python Slice函数使用教程 - 详解与示例 | Python切片操作指南
Python中的`slice()`函数用于创建切片对象,以便对序列(如列表、字符串、元组)进行高效切片操作。它支持指定起始索引、结束索引和步长,提升代码可读性和灵活性。
|
人工智能 数据库连接 API
掌握Python的高级用法:技巧、技术和实用性示例
本文分享了Python的高级用法,包括生成器、装饰器、上下文管理器、元类和并发编程等。生成器通过`yield`实现懒加载序列;装饰器用于增强函数功能,如添加日志或性能分析;上下文管理器借助`with`语句管理资源;元类动态定制类行为;并发编程利用`threading`和`asyncio`库提升任务执行效率。掌握这些高级概念可优化代码质量,解决复杂问题,提高程序性能与可维护性。
391 6

推荐镜像

更多