安装

Matplotlib的安装:

1.pip install matplotlib

2.conda install matplotlib (清华源:https://pypi.tuna.tsinghua.edu.cn/simple)

Matplotlib的导入: import matplotlib.pyplot as plt

介绍

  Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格   式。

基础绘图功能

plot() :用于画图,它可以绘制点和线,语法格式如下: plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)

x, y

点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。

fmt

可选,定义基本格式(如颜色、标记和线条样式)。

**kwargs

可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。

plot() :用于画图,它可以绘制点和线。 · 绘制坐标 (1, 3) 到 (8, 10) 的线。

import matplotlib.pyplot as plt
import numpy as np

xpoints = np.array([1, 8])
ypoints = np.array([3, 10])

plt.plot(xpoints, ypoints)
plt.show()

关键参数​​:

marker:点标记样式(o圆点、s方块)

linestyle/ls:线型(-实线、--虚线)

color/c:颜色(名称/十六进制/RGB值)

linewidth/lw:线宽

如果我们不指定 x 轴上的点,则 x 会根据 y 的值来设置为 0, 1, 2, 3..N-1。

import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([3, 10])

plt.plot(ypoints)
plt.show()

练习

在同一张图中分别绘制正弦图和余弦图

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 创建数据点
x = np.linspace(0, 12, 1000)  # 横坐标从0到12
y_sin = np.sin(x)             # 正弦函数
y_cos = np.cos(x)             # 余弦函数

# 创建图形
plt.figure(figsize=(10, 6))

# 绘制正弦曲线(蓝色)
plt.plot(x, y_sin, color='blue', linewidth=2, label='sin(x)')

# 绘制余弦曲线(橙色)
plt.plot(x, y_cos, color='orange', linewidth=2, label='cos(x)')

# 设置坐标轴范围和刻度
plt.xlim(0, 12)
plt.ylim(-1, 1)

# 设置x轴刻度(0,2,4,6,8,10,12)
plt.xticks(np.arange(0, 13, 2))

# 设置y轴刻度(-1.00到1.00,每0.25一个刻度)
plt.yticks(np.arange(-1.00, 1.25, 0.25))

# 添加网格线
plt.grid(True, linestyle='--', alpha=0.7)

# 添加图例
plt.legend(loc='upper right')

# 添加坐标轴标签
plt.xlabel('x')
plt.ylabel('y')

# 显示图形
plt.show()

结果展示:

plot()中的 marker 参数:定义一些不一样的标记

总结基础图表类型:

​​图表类型​​

​​函数​​

​​关键参数​​

​​参数解释​​

​​折线图​​

plt.plot()

marker
linestyle
color

​​marker​​: 数据点标记样式('o'圆形、's'方形、'*'星号等)


​​linestyle​​: 线条样式('-'实线、'--'虚线、':'点线等)
​​color​​: 线条颜色(名称如'red'、十六进制值如'#FF5733')

​​散点图​​

plt.scatter()

s
c
alpha

​​s​​: 点的大小(标量或数组,控制每个点的尺寸)


​​c​​: 点的颜色(单一颜色或数组,用于数值映射)
​​alpha​​: 透明度(0透明~1不透明)

​​柱状图​​

plt.bar()

width
color
edgecolor

​​width​​: 柱子宽度(默认0.8,值越小柱子越窄)


​​color​​: 柱子填充色(支持列表按柱子分配颜色)
​​edgecolor​​: 柱子边框颜色(如'black')

​​水平柱状图​​

plt.barh()

height
align

​​height​​: 条形高度(默认0.8,值越小条形越窄)


​​align​​: 对齐方式('center'居中、'edge'边缘对齐刻度)

​​饼图​​

plt.pie()

autopct
explode
shadow

​​autopct​​: 百分比格式(如'%1.1f%%'保留一位小数)


​​explode​​: 区块分离距离(列表,如[0,0.1,0]突出第二块)
​​shadow​​: 是否添加阴影(True/False)

​​直方图​​

plt.hist()

bins
density
stacked

​​bins​​: 区间数量/边界(整数或列表,如bins=[0,10,20])


​​density​​: 是否归一化为概率密度(True显示频率)
​​stacked​​: 多数据是否堆叠(True堆叠显示)

​​热力图​​

plt.imshow()

cmap
interpolation

​​cmap​​: 颜色映射方案(如'viridis'、'hot'、'coolwarm')


​​interpolation​​: 像素插值方法('nearest'锯齿、'bilinear'平滑)

scatter():绘制散点图

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')

x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')

plt.show()

bar():绘制柱形图, 自定义各个柱形的颜色:

练习2

图表定制化总结

定制要素​​

​​函数/参数​​

​​配置示例​​

​​参数解释​​

​​坐标轴​​

xlim(), yticks()

plt.xticks(range(0,13,2))

​​xlim(left, right)​​:设置X轴范围(left为最小值,right为最大值)

。
​​yticks(ticks, labels)​​:设置Y轴刻度位置(ticks为刻度值列表,labels为对应标签)。

​​网格​​

grid()

linestyle='--', alpha=0.6

​​b​​:是否显示网格(True/False)

。
​​axis​​:网格方向('x'、'y'、'both')。
​​linestyle​​:线型(如'--'虚线)。
​​alpha​​:透明度(0~1)。

​​标签​​

xlabel(), title()

fontsize=14, pad=15

​​label​​:标签文本内容

。
​​fontsize​​:字体大小(单位:磅)。
​​labelpad​​:标签与坐标轴的距离(像素)。
​​pad​​(标题):标题与图表顶部的间距。

​​图例​​

legend()

loc='upper right', title='Categories'

​​loc​​:位置(如'upper right'、'best'自动选择)

。
​​title​​:图例标题文本。
​​bbox_to_anchor​​:自定义定位(元组坐标)。
​​ncol​​:图例列数(默认为1)。

​​布局​​

tight_layout()

pad=2.0, w_pad=1.5

​​pad​​:子图与画布边缘的间距

。
​​w_pad/h_pad​​:子图间水平/垂直间距。
​​rect​​:调整后的矩形区域([left, bottom, right, top])。

​​子图​​

subplot()

plt.subplot(2,2,1)

​​nrows, ncols​​:网格行/列数

。
​​index​​:子图位置索引(从1开始)。
​​projection​​:坐标系类型(如'polar'极坐标)

pie():绘制饼图

练习3

已知五年级三班的同学中,喜欢篮球的同学占20%,喜欢乒乓球的同学占30%,喜欢羽毛球的同学占20%,喜欢足球的同学占18%,喜欢排球的同学占12%。请你根据已知条件画出一个饼图,让所占比例看的更加清楚。

import matplotlib.pyplot as plt
import numpy as np

y = np.array([20, 30, 20, 18, 12])

plt.pie(y,
        labels=['篮球', '乒乓球', '羽毛球', '足球', '排球'],  # 设置饼图标签
        colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9", "#e8c547"],  # 补充第5种颜色
        explode=(0.1, 0.3, 0.1, 0, 0),  # 修正中文逗号和长度
        autopct='%.2f%%',
       )


plt.title("五年级三班球类运动喜好分布")  # 优化标题描述
plt.show()

使用 hist() 函数绘制多个数据组的直方图

我们也可以结合 Pandas 来绘制直方图

imshow() 可以显示热力图

imshow() 创建了一个 4x4 的二维 numpy 数组,并对其进行了三种不同的 imshow 图像展示

 

 

更多推荐