数据可视化Matplotlib

发布于:2025-08-08 ⋅ 阅读:(18) ⋅ 点赞:(0)

安装

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 图像展示

 

 


网站公告

今日签到

点亮在社区的每一天
去签到