欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matplotlib 必知的 15 个图

程序员文章站 2022-04-27 08:11:00
...

Python与算法社区

已原创423篇,干货满满

值得星标

01

matplotlib 必知的 15 个图

02

matplotlib 必知的 15 个图

03

matplotlib 必知的 15 个图

三步加星标

施工专题,我已完成20篇,施工系列几乎覆盖Python完整技术栈,目标只总结实践中最实用的东西,直击问题本质,快速帮助读者们入门和进阶:

1我的施工计划

2数字专题

3字符串专题

4列表专题

5流程控制专题

6编程风格专题

7函数使用

8面向对象编程(上篇)

9面向对象编程(下篇)

10十大数据结构

11包和模块使用总结

12Python正则专题总结

13设计模式

14Python时间模块总结

15 Python 装饰器

16 Python 迭代器

17 Python 生成器

18 Python 绘图入门

19 Python 绘图神器matplotlib(上)

20 matplotlib 绘图(中)

今天是讨论matplotlib绘图的最后一篇,这次以案例和代码为主,总结平时最常使用的绘图API,参考前几天推送给大家的matplotlib绘图60案例这本书籍。

需要导入的模块,matplotlib绘图,numpy几乎是必用的包。

# 导入numpy模块
import numpy as np
# 导入pyplot模块
import matplotlib.pyplot as plt

案例1基本折线图

# 创建序列[1,2,3,...,99]
X = range(100)
# X中元素依次取平方
Y = [value ** 2 for value in X]
plt.plot(X, Y)
plt.show()

matplotlib 必知的 15 个图

案例2正弦图

# [0,2PI)分割为100份
X = np.linspace(0, 2 * np.pi, 100)
# 计算正弦值
Y = np.sin(X)
plt.plot(X, Y)
plt.show()

matplotlib 必知的 15 个图

案例3正弦和余弦图

X = np.linspace(0, 2 * np.pi, 100)
Ya = np.sin(X)
# 计算余弦值
Yb = np.cos(X)
plt.plot(X, Ya)
plt.plot(X, Yb)
plt.show()

matplotlib 必知的 15 个图

案例4 曲线

def plot_slope(X, Y):
    # 计算x方向相邻元素的delta
    Xs = X[1:] - X[:-1]
    # y方向delta
    Ys = Y[1:] - Y[:-1]
    plt.plot(X[1:], Ys / Xs)

X = np.linspace(-3, 3, 100)
Y = np.exp(-X ** 2)
plt.plot(X, Y)
plot_slope(X, Y)
plt.show()

matplotlib 必知的 15 个图

案例5读入数据文件

数据文件 my_data.txt 为:

0
0
1
1
2 4
4
16
5 25
6
36

X, Y = [], []
# 按行读入txt文件
for line in open('my_data.txt', 'r'):
    # 得到一对(x,y)坐标
    values = [float(s) for s in line.split()]
    X.append(values[0])
    Y.append(values[1])

plt.plot(X, Y)
plt.show()

matplotlib 必知的 15 个图

案例6散点图

1024个随机点的散点图

# 随机生成1024行2列的数据,就是1024个点(x,y)
data = np.random.rand(1024, 2)
# 绘制散点图
plt.scatter(data[:, 0], data[:, 1])
plt.show()

matplotlib 必知的 15 个图

案例7 柱状图

data = [5., 25., 50., 20.]
plt.bar(range(len(data)), data, width=0.5)
plt.show()

matplotlib 必知的 15 个图

案例8 水平柱状图

data = [5., 25., 50., 20.]
plt.barh(range(len(data)), data)
plt.show()

matplotlib 必知的 15 个图

案例9 系列柱状图

import numpy as np
import matplotlib.pyplot as plt

data = [[5., 25., 50., 20.],
[4., 23., 51., 17.],
[6., 22., 52., 19.]]

X = np.arange(4)

plt.bar(X + 0.00, data[0], color='b', width=0.25)
plt.bar(X + 0.25, data[1], color='g', width=0.25)
plt.bar(X + 0.50, data[2], color='r', width=0.25)

plt.show()

matplotlib 必知的 15 个图

案例10 stacked 柱状图

A = [5., 30., 45., 22.]
B = [5., 25., 50., 20.]
X = range(4)
plt.bar(X, A, color='b')
plt.bar(X, B, color='r', bottom=A)

plt.show()

matplotlib 必知的 15 个图

案例11 背靠背水平柱状图

women_pop = np.array([5., 30., 45., 22.])
men_pop = np.array([5., 25., 50., 20.])
X = np.arange(4)

plt.barh(X, women_pop, color = 'r')
plt.barh(X, -men_pop, color = 'b')
plt.show()
X = np.arange(4)

plt.barh(X, women_pop, color='r')
plt.barh(X, -men_pop, color='b')

plt.show()

matplotlib 必知的 15 个图

案例12 饼状图

data = [5, 25, 50, 20]
plt.pie(data)

plt.show()

matplotlib 必知的 15 个图

案例13 直方图

X = np.random.randn(1000)
plt.hist(X, bins=20)

plt.show()

matplotlib 必知的 15 个图

以上直方图描述了20个区间内,点数的频次。

案例14 箱形图

data = np.random.randn(100, 5)
plt.boxplot(data)

plt.show()

matplotlib 必知的 15 个图

箱形图中红线表示中位数,往下线是1/4分位数,往上线是3/4分位数,再往下延伸线的长度等于2倍的(上分位数-下分位数),圆圈表示异常点。

案例15 triangulation 图

import matplotlib.tri as tri
data = np.random.rand(100, 2)
triangles = tri.Triangulation(data[:, 0], data[:, 1])
plt.triplot(triangles)

plt.show()

matplotlib 必知的 15 个图

以上这15个图是最最基本的matplotlib绘图,是不能再精简的了,使用尽可能少的代码绘图,方便初学的读者入门。

matplotlib的更多颜色、样式设置、标注设置、多个子图、3D绘图、GUI绘图前面我们也都多少涉及过,在此不再重复。

如果对以上内容感兴趣的读者,可微信我,获取《适合练手的matplotlib 60个案例》电子书。

matplotlib 必知的 15 个图

不必打赏

给我点个赞

就心满意足了