Matplotlib 简单绘图

1. 导入第三方包 numpy、matplotlib

# 导入numpy数组
import numpy as np

# 导入Matplotlib
import matplotlib.pyplot as plt

# 导入三维坐标轴图
from mpl_toolkits.mplot3d import Axes3D as plt_3d

 

2. 使用 plot() 绘图

# 等距离线性生成(0,50)的30个x数据
x = np.linspace(0, 50, 30)

# 生成y加上随机偏移量
y = 3 * x + np.random.randn(30)*5

# 生成连续图
plt.plot(x, y)

# 显示图形,在Jupyter中有没有这句都不影响
plt.show()

Matplotlib 简单绘图

3. 初次使用figure框

# 等距离线性生成(0,50)的30个x数据
x = np.linspace(-5, 5, 30)

# 两种不同的关系式
y1 = 2*x + 8
y2 = x**2 - 3
# 使用一个图片框
plt.figure()
plt.plot(x, y1)
plt.show()

Matplotlib 简单绘图

 

# 一个图片框也可以多个关系图
plt.figure()
plt.plot(x, y1)

# color=红色, linestyle=线条类型
plt.plot(x, y2, color='red', linestyle='--')
plt.show()

Matplotlib 简单绘图

 

# 新生成一个图片框
plt.figure()

# 限制图片框的坐标限
plt.xlim((-3, 3))
plt.ylim((-5, 15))
plt.plot(x, y1)
plt.plot(x, y2, color='red', linestyle='--')
plt.show()

Matplotlib 简单绘图

4. figure优化

# 等距离线性生成(0,50)的30个x数据
x = np.linspace(-5, 5, 30)

# 两种不同的关系式
y1 = 2*x + 8
y2 = x**2 - 3
# label=图标注解
plt.plot(x, y1, label='line', linestyle='--')
plt.plot(x, y2, label='cur', color='r')

# 显示图标
plt.legend()
plt.show()

Matplotlib 简单绘图

5. 使用 scatter 绘制散点图

size = 128
# normal正态分布(均值,方差,数量)
x = np.random.normal(0, 1, size)
y = np.random.normal(0, 1, size)
color = np.arctan2(y, x)

# 设置两个坐标轴为空,即去除数字
plt.xticks(())
plt.yticks(())

# alpha: 透明度
plt.scatter(x, y, c=color, alpha=0.7)
plt.show()

Matplotlib 简单绘图

6. 柱状图

size = 16
x = np.arange(size)

# 随便得出y值
y = x + np.random.randn(16)*(np.random.randint(16-x))

# 处理y为负值的情况
for i in range(16):
    if y[i]<0:
        y[i] = -y[i]

# 设置两个坐标轴为空,即去除数字
plt.xticks(())
plt.yticks(())

# 柱状图
plt.bar(x, y)
plt.show()

Matplotlib 简单绘图

7. Image 图片

arr = np.random.randn(9).reshape(3, 3)

# Image图片
plt.imshow(arr, origin='upper', cmap='bone', interpolation='nearest')

# 颜色棒
plt.colorbar()

# 设置两个坐标轴为空,即去除数字
plt.xticks(())
plt.yticks(())
plt.show()

Matplotlib 简单绘图

8. 3D 图像

fig = plt.figure()

# 生成3D视图对象
ax = plt_3d(fig)

# x、y、z 数值
x = np.arange(-4, 4, 0.25)
y = np.arange(-4, 4, 0.25)
x, y = np.meshgrid(x, y)
R = np.sqrt(x**2 + y**2)

z = np.sin(R)

ax.plot_surface(x, y, z, cmap=plt.get_cmap('rainbow'))

plt.show()

Matplotlib 简单绘图

9. 使用 subplot 多合一显示

plt.figure()

# 整个figure分成 2*2 个,即两行两列,相当于讲一个figure中分割成四个小的figure,然后在里面绘图

# 第一张小图,占据两格
plt.subplot(2, 1, 1)
x = np.arange(16)
y = x + np.abs(np.random.randn(16)*(16-x))
# 绘图
plt.plot(x, y)

# 第二张小图
plt.subplot(2, 2, 3)
plt.scatter(x, y, color='r', alpha=0.7)

# 第三张小图
plt.subplot(2, 2, 4)
plt.bar(x, y, color='g')

plt.show()

Matplotlib 简单绘图

 

上一篇:python实现数据可视化


下一篇:java基础特性,封装,继承,多态