首页 > 编程语言 >【Python】数据处理:Matplotlib绘图

【Python】数据处理:Matplotlib绘图

时间:2024-06-16 14:30:45浏览次数:23  
标签:plt show Python 标签 Matplotlib 添加 绘图 np import

Matplotlib是Python强大的数据可视化工具库,类似于MATLAB语言。Mat-lotlib提供了一整套与MATLAB相似的命令API,十分适合进行交互式制图,而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
Matplotlib是神经生物学家John D.Hunter于2007年创建的,其函数设计参考了MATLAB。

折线图

基础折线图

import matplotlib.pyplot as plt
# 数据
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)  # 绘制折线图
plt.show()  # 显示图表

在这里插入图片描述

折线图样式

plt.plot() 函数常见参数及其缩写

  1. x, y:
    • 折线图的 X 轴和 Y 轴数据。
  2. color (c):
    • 折线的颜色。
    • 可以是颜色名称(如 'red')、颜色缩写(如 'r')或者 RGB 十六进制值(如 '#FF5733')。
  3. linestyle (ls):
    • 折线的线型。
    • 可选值包括 '-'(实线,默认)、'--'(虚线)、':'(点线)、'-.'(点划线)。
  4. linewidth (lw):
    • 折线的宽度。
    • 数值型,表示折线的粗细,默认值是 1。
  5. marker:
    • 数据点的标记样式。
    • 可选值包括 'o'(圆圈)、'^'(三角形)、's'(正方形)、'*'(星号)等。
  6. markersize (ms):
    • 数据点的大小。
    • 数值型,表示数据点的直径大小。
  7. markerfacecolor (mfc) / markeredgecolor (mec):
    • 数据点标记的填充颜色和边缘颜色。
  8. label:
    • 折线的标签,用于图例的显示。
  9. alpha:
    • 折线的透明度。
    • 可以是 0 到 1 之间的值,0 表示完全透明,1 表示完全不透明

以下是Matplotlib中常用的颜色、线型和标记样式参数的表格展示:

颜色参数

颜色名称颜色代码
蓝色'b'
绿色'g'
红色'r'
青色'c'
洋红色'm'
黄色'y'
黑色'k'
白色'w'
颜色名称颜色代码
----------------
蓝色'blue'
绿色'green'
红色'red'
青色'cyan'
洋红色'magenta'
黄色'yellow'
黑色'black'
白色'white'
灰色'gray'
橙色'orange'
粉色'pink'
紫色'purple'
棕色'brown'

线型参数

线型说明线型代码
实线'-'
虚线'--'
点线':'
点划线'-.'

标记样式参数

标记说明标记代码
'.'
圆圈'o'
叉号'x'
加号'+'
星号'*'
方块's'
三角形'^'
倒三角形'v'
左三角形'<'
右三角形'>'
六边形1'h'
六边形2'H'
五角形'p'
垂直线`’
水平线'_'

添加标题和标签

可以为图表添加标题、X轴和Y轴的标签。

plt.plot(x, y)
plt.title('Simple Line Plot')  # 标题
plt.xlabel('X Axis Label')     # X轴标签
plt.ylabel('Y Axis Label')     # Y轴标签
plt.show()

在这里插入图片描述

添加网格线

可以添加网格线以便于读取数据。

plt.plot(x, y)
plt.grid(True)  # 添加网格线
plt.show()

plt.grid()常用参数:

  • which:指定网格线类型,可以是 'major'(主要刻度)或者 'minor'(次要刻度)
  • axis:指定在哪个轴上添加网格线,可以是 'both'(默认,同时添加X和Y轴的网格线)、'x'(只在X轴上添加)、'y'(只在Y轴上添加)。

在这里插入图片描述

设置坐标轴范围

可以设置X轴和Y轴的显示范围。

plt.plot(x, y)
plt.xlim(0, 5)  # X轴范围
plt.ylim(0, 20) # Y轴范围
plt.show()

在这里插入图片描述

设置刻度和刻度标签

可以设置刻度的值和标签。

plt.plot(x, y)
plt.xticks([1, 2, 3, 4], ['one', 'two', 'three', 'four'])  # 设置X轴刻度标签
plt.yticks([1, 4, 9, 16], ['one', 'four', 'nine', 'sixteen'])  # 设置Y轴刻度标签
plt.show()

在这里插入图片描述

保存图表

可以将图表保存为图像文件。

plt.plot(x, y)
plt.savefig('line_plot.png')  # 保存为PNG文件

多子图绘制

可以在同一个图中绘制多个子图。

# 创建一个2x1的子图
plt.subplot(2, 1, 1)
plt.plot(x, y)
plt.title('First Subplot')

plt.subplot(2, 1, 2)
plt.plot(x, y)
plt.title('Second Subplot')

plt.tight_layout()  # 自动调整子图之间的间距
plt.show()

在这里插入图片描述

散点图

基础散点图

import matplotlib.pyplot as plt  
# 数据
x = [1, 2, 3, 4, 5]  
y = [2, 3, 5, 7, 11]  
plt.scatter(x, y)  # 绘制散点图  
plt.show()

在这里插入图片描述

散点图样式

  1. x, y:
    • 必需的参数,分别是散点图的 X 轴和 Y 轴数据。
  2. s:
    • 散点的大小。
    • 可以是单个数值表示所有散点的大小,也可以是一个数组,指定每个散点的大小。
    • 示例: plt.scatter(x, y, s=100)plt.scatter(x, y, s=sizes),其中 sizes 是一个与数据长度相同的数组。
  3. c:
    • 散点的颜色。
    • 可以是颜色名称(如 'red')、颜色缩写(如 'r')或者 RGB 十六进制值(如 '#FF5733')。
    • 示例: plt.scatter(x, y, c='blue')
  4. marker:
    • 散点的标记样式。
    • 可选值包括 'o'(圆圈,默认)、'^'(三角形)、's'(正方形)、'*'(星号)等。
    • 示例: plt.scatter(x, y, marker='o')
  5. alpha:
    • 散点的透明度。
    • 可以是 0 到 1 之间的值,0 表示完全透明,1 表示完全不透明。
    • 示例: plt.scatter(x, y, alpha=0.5)
  6. linewidths (lw) 和 edgecolors (ec):
    • 控制散点边缘的线宽和颜色。
    • linewidths 可以设置边缘的线宽,edgecolors 可以设置边缘的颜色。
    • 示例: plt.scatter(x, y, lw=2, ec='black')
  7. label:
    • 散点图的标签,用于图例的显示。
# 生成随机数据
np.random.seed(0)
x = np.random.rand(50)
y = np.random.rand(50)
sizes = np.random.rand(50) * 100  # 随机生成散点的大小
colors = np.random.rand(50)  # 随机生成散点的颜色

plt.scatter(x, y, s=sizes, c=colors, alpha=0.7, marker='o', label='Random Data')  # 绘制散点图

# 添加标题和标签
plt.title('Scatter Plot Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.legend()  # 添加图例
plt.show()  # 显示图形

在这里插入图片描述

三维折线图

import matplotlib.pyplot as plt
import numpy as np

# 创建一个 Figure 对象和 3D Axes 对象
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')

# 生成曲线上的数据
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)

# 绘制曲线
ax.plot(x, y, z, label='3D Spiral Curve')

# 添加标题和标签
ax.set_title('3D Spiral Curve Plot')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')


ax.legend()  # 添加图例
plt.show()  # 显示图形

在这里插入图片描述

三维曲面图

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

# 创建一个 Figure 对象和 3D Axes 对象
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')

# 绘制三维曲面图
ax.plot_surface(x, y, z, cmap='viridis')

# 添加标题和标签
ax.set_title('3D Surface Plot')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
ax.set_zlabel('Z Axis')

# 显示图形
plt.show()

在这里插入图片描述

柱状图

import matplotlib.pyplot as plt
import numpy as np

# 数据
categories = ['A', 'B', 'C', 'D']
values = [7, 13, 5, 17]

# 创建柱状图
plt.figure(figsize=(8, 6))
plt.bar(categories, values, color='skyblue')

# 添加标题和标签
plt.title('Simple Bar Plot')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

在这里插入图片描述

直方图

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据(正态分布)
data = np.random.randn(1000)

# 创建直方图
plt.figure(figsize=(8, 6))
plt.hist(data, bins=30, edgecolor='black')

# 添加标题和标签
plt.title('Histogram of Random Data')
plt.xlabel('Value')
plt.ylabel('Frequency')

# 显示图形
plt.show()

在这里插入图片描述

饼图

import matplotlib.pyplot as plt

# 数据
sizes = [25, 30, 20, 15, 10]  # 每一部分的大小
labels = ['A', 'B', 'C', 'D', 'E']  # 每一部分的标签

# 创建饼图
plt.figure(figsize=(8, 6))
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)

# 添加标题
plt.title('Simple Pie Chart')

# 显示图形
plt.show()

在这里插入图片描述

等高线图

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(-3.0, 3.0, 100)
y = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 创建填充等高线图
plt.figure(figsize=(8, 6))
plt.contourf(X, Y, Z, levels=20, cmap='RdGy')

# 添加颜色栏
plt.colorbar(label='Value')

# 添加标题和标签
plt.title('Filled Contour Plot')
plt.xlabel('X axis')
plt.ylabel('Y axis')

# 显示图形
plt.show()

在这里插入图片描述

箱线图

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
np.random.seed(10)
data = [np.random.normal(0, std, 100) for std in range(1, 4)]

# 创建箱线图
plt.figure(figsize=(8, 6))
plt.boxplot(data)

# 添加标题和标签
plt.title('Box Plot')
plt.xticks([1, 2, 3], ['Data 1', 'Data 2', 'Data 3'])
plt.ylabel('Value')

# 显示图形
plt.show()

在这里插入图片描述

热图

import matplotlib.pyplot as plt
import numpy as np

# 生成随机数据
data = np.random.rand(10, 12)

# 创建热图
plt.figure(figsize=(8, 6))
plt.imshow(data, cmap='hot', interpolation='nearest')

# 添加颜色栏
plt.colorbar()

# 添加标题和标签
plt.title('Heatmap')
plt.xlabel('X axis')
plt.ylabel('Y axis')

# 显示图形
plt.show()

在这里插入图片描述

误差图

import matplotlib.pyplot as plt
import numpy as np

# 数据
x = np.linspace(0, 10, 10)
y = np.sin(x)
yerr = 0.2  # 统一的误差范围

# 创建误差图
plt.figure(figsize=(8, 6))
plt.errorbar(x, y, yerr=yerr, fmt='o', label='Data with Error Bars')

# 添加标题和标签
plt.title('Error Bar Plot')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.legend()

# 显示图形
plt.show()

在这里插入图片描述

标签:plt,show,Python,标签,Matplotlib,添加,绘图,np,import
From: https://blog.csdn.net/2303_80346267/article/details/139708642

相关文章

  • python 如何生成原创文章
    生成原创文章是一个复杂的过程,因为它需要创造力、知识、语法和上下文理解。然而,Python可以用于辅助文章创作,例如通过生成文本、组合现有信息或根据特定模式进行内容创建。但要完全生成一个完全原创、有深度且逻辑连贯的文章,目前的技术还无法完全实现。不过,以下是一些Python可......
  • (必读)深入浅出Pandas:利用Python进行数据处理与分析 (李庆辉)
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoPandas概述:介绍了Pandas库的基本概念、特点和优势,以及它在数据处理和分析领域的重要性。Series对象:讲解了Series对象的创建、访问、修改以及常用的统计和分析方法,如均值、中位数、标准差等。DataFrame对象:详细......
  • 算法精粹:经典计算机科学问题的 Python 实现 (David Kopec)
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso书籍简介:介绍了本书的作者、出版背景以及主要目的,即帮助读者深入理解算法原理,并通过Python实现解决计算机科学中的经典问题。Python语言基础:简要介绍了Python语言的特点和优势,为后续使用Python实现算法打下基础......
  • windows系统python代码打包为exe
    目录1建立虚拟环境condavenv2打包安装pyinstaller打包1建立虚拟环境好处:打包文件小,成功率高。坏处:代码使用到的第三方库需要重新安装如果不想使用虚拟环境,直接看2打包。conda如果没有conda,直接使用venv。查看虚拟环境condaenvlist创建虚拟环境condacreate......
  • 运筹学练习Python精解——决策论
    练习1某地区有甲、乙、丙三家食品厂生产同一种食品,有一千个用户(或购货点),假定在研究期间无新用户加入也无老用户退出,只有用户的转移,已知2006年5月份有500户是甲厂的顾客;400户是乙厂的顾客;100户是丙厂的顾客。6月份,甲厂有400户原来的顾客,上月的顾客有50户转乙厂,50户......
  • (高清pdf集合)图灵程序设计丛书:大规模数据处理入门与实战(套装全10册)【图灵出品!一套囊括S
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqso数据处理基础:介绍数据处理的基本概念、流程和应用场景,帮助读者建立对数据处理的整体认识。SQL语言与应用:详细讲解SQL的语法和用法,包括数据查询、数据操作和数据定义等,以及在实际应用中的最佳实践。Python数据挖......
  • MATLAB算法实战应用案例精讲-【数模应用】事后多重比较(附python、MATLAB和R语言代码实
    目录几个高频面试题目事后检验,多重比较,简单效应分析有什么区别?事后多重对比如何使用?算法原理SPSSAU疑难解惑提示‘数据质量异常’如何解决?如何做Dunnett法事后多重比较?方差分析事后多重比较提供‘字母标记法!’?关于方差分析时的效应量?字母标记法时没有输出结果?......
  • Demo | 利用机器学习构建作物模型的Python源码
    作物模型提出很早,但应用有限。看起来复杂,其实解决的是环境与表型间的关联,可参考前期推文:作物生长模型CropGrow。环境组的复杂,关键在于数据的准确性获取。对于数据分析人员来说,如果不care数据准确性,分析其实很简单的,就是经典的机器学习流程。这里提供一段伪代码仅供参考。1.导库......
  • Python爬虫案例:从某居网爬取房源信息
    网站链接:sjz.anjuke.com目标数据:位置、面积、价格、房源链接约束条件:房产价格在80-140w首先在浏览器上输入网址,通过鼠标右键-“检查”来确定各网页元素在html源代码中的位置和构成​通过检查导航的价格索引,找出了80-140w的房源信息的网页链接,url依次以13-15结尾并且其它数......
  • 批量异步上传aws图片脚本(python)
    背景工作中需要上传一些测试图片,于是网上找找资料(官方说明),前置步骤如下。python需要3.8以上,安装最新的boto3库:pipinstallboto3有一个S3权限的aws账户,得到访问密钥ACCESS_KEY与SECRET_KEY,以及上传图片的存储桶位置安装异步编程asyncio,aiohttp库,方便本地异步上传图片代码......