数据可视化Matplotlib
安装
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 npxpoints = 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 npypoints = 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 参数:定义一些不一样的标记
总结基础图表类型:
图表类型 | 函数 | 关键参数 | 参数解释 |
---|---|---|---|
折线图 |
|
| linestyle : 线条样式('-' 实线、'--' 虚线、':' 点线等) color : 线条颜色(名称如'red' 、十六进制值如'#FF5733' ) |
散点图 |
|
| c : 点的颜色(单一颜色或数组,用于数值映射) alpha : 透明度(0透明~1不透明) |
柱状图 |
|
| color : 柱子填充色(支持列表按柱子分配颜色) edgecolor : 柱子边框颜色(如'black' ) |
水平柱状图 |
|
| align : 对齐方式('center' 居中、'edge' 边缘对齐刻度) |
饼图 |
|
| explode : 区块分离距离(列表,如[0,0.1,0] 突出第二块) shadow : 是否添加阴影(True /False ) |
直方图 |
|
| density : 是否归一化为概率密度(True 显示频率) stacked : 多数据是否堆叠(True 堆叠显示) |
热力图 |
|
| interpolation : 像素插值方法('nearest' 锯齿、'bilinear' 平滑) |
scatter():绘制散点图
import matplotlib.pyplot as plt
import numpy as npx = 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
图表定制化总结
定制要素 | 函数/参数 | 配置示例 | 参数解释 |
---|---|---|---|
坐标轴 |
|
| yticks(ticks, labels) :设置Y轴刻度位置(ticks 为刻度值列表,labels 为对应标签)。 |
网格 |
|
| axis :网格方向('x' 、'y' 、'both' )。 linestyle :线型(如'--' 虚线)。 alpha :透明度(0~1)。 |
标签 |
|
| fontsize :字体大小(单位:磅)。 labelpad :标签与坐标轴的距离(像素)。 pad (标题):标题与图表顶部的间距。 |
图例 |
|
| title :图例标题文本。 bbox_to_anchor :自定义定位(元组坐标)。 ncol :图例列数(默认为1)。 |
布局 |
|
| w_pad /h_pad :子图间水平/垂直间距。 rect :调整后的矩形区域([left, bottom, right, top] )。 |
子图 |
|
| index :子图位置索引(从1开始)。 projection :坐标系类型(如'polar' 极坐标) |
pie():绘制饼图
练习3
已知五年级三班的同学中,喜欢篮球的同学占20%,喜欢乒乓球的同学占30%,喜欢羽毛球的同学占20%,喜欢足球的同学占18%,喜欢排球的同学占12%。请你根据已知条件画出一个饼图,让所占比例看的更加清楚。
import matplotlib.pyplot as plt
import numpy as npy = 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 图像展示