【Python】数据处理:Matplotlib绘图

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()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值