Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图)

2023-05-16

文章目录

    • 写在前面:
      • 一、等高线图
      • 二、热力图
      • 三、饼图

写在前面:

  • import numpy as np
  • import matplotlib.pylab as mp
  • 因此文章中的np就代表numpy库,mp就代表pylab绘图库

一、等高线图

1、两类等高线图

  • 线型:mp.coutour(x, y, z, 线的数量, colors=颜色, linewidths=线宽)
  • 色带型:mp.coutourf(x, y, z, 线的数量, cmap=颜色映射)

2、添加标签
mp.clabel(cntr, inline_spacing=1, fmt=’%.1f’, fontsize=10)
一参是对象,二参是线内宽,三参是文字格式,四参文字大小

3、测试代码

import numpy as np
import matplotlib.pylab as mp

n = 1000
# 栅格化:两组1000个-3到3的一维数组成x和y,会形成1000*1000个焦点的二维数组
x, y = np.meshgrid(np.linspace(-3, 3, n),
                   np.linspace(-3, 3, n))

# uniform:均匀分布,在0.5和1.0之内产生n个随机数
y1 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)  # (1 - x/n)为了方便显示
y2 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)
z = (1 - x/2 + x**5 + y**3) * \
    np.exp(-x**2 - y**2)
# 换行做运算需要用\隔开,exp是底数为x指数是-x**2 - y**2


# 图像属性
mp.figure("Contour", facecolor="lightgray")
mp.title("Contour", fontsize=20)  # 图像标题
mp.xlabel('X', fontsize=14)  # X、Y刻度显示的文本
mp.ylabel('Y', fontsize=14)
mp.tick_params(labelsize=10)  # 刻度标签大小
mp.grid(linestyle=":")  # 网格线,并且只画与y相关联的

# 绘制图像
# cntr = mp.contour(x, y, z, 8, colors='black', linewidths=0.5)  # 线型,虚线是负的,实线是正的
# 创建标签
# mp.clabel(cntr, inline_spacing=1, fmt='%.1f', fontsize=10)  # 一参是对象,二参是线内宽,三参是文字格式,文字大小

# 色带型等高线对象
cntr = mp.contourf(x, y, z, 8, cmap='jet')  # 色带型

mp.show()

4、测试效果
1)线型:
33
2)色带型:
11

二、热力图

1、格式
mp.imshow(矩阵, cmap=颜色映射, origin=纵轴方向)

2、测试代码

import numpy as np
import matplotlib.pylab as mp

n = 1000
# 栅格化:两组1000个-3到3的一维数组成x和y,会形成1000*1000个焦点的二维数组
x, y = np.meshgrid(np.linspace(-3, 3, n),
                   np.linspace(-3, 3, n))

# uniform:均匀分布,在0.5和1.0之内产生n个随机数
y1 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)  # (1 - x/n)为了方便显示
y2 = (1 - x/n) * np.random.uniform(0.5, 1.0, n)
z = (1 - x/2 + x**5 + y**3) * \
    np.exp(-x**2 - y**2)
# 换行做运算需要用\隔开,exp是底数为x指数是-x**2 - y**2

# 图像属性
mp.figure("Hot", facecolor="lightgray")
mp.title("Hot", fontsize=20)  # 图像标题
mp.xlabel('X', fontsize=14)  # X、Y刻度显示的文本
mp.ylabel('Y', fontsize=14)
mp.tick_params(labelsize=10)  # 刻度标签大小
mp.grid(linestyle=":")  # 网格线,并且只画与y相关联的

# 绘制热力图像
cntr = mp.imshow(z, cmap='jet')


mp.show()

3、测试效果:
22

三、饼图

1、格式
mp.pie(值的列表,
间隙列表,
标签列表,
颜色列表,
格式串,
shadow=是否阴影,
startangle=起始角度)

2、测试代码

import matplotlib.pylab as mp

# 图像属性
mp.figure("Pie", facecolor="lightgray")
mp.title("Pie", fontsize=20)  # 图像标题

mp.pie(
    [17, 29, 11, 21, 26],
    [0.01, 0.01, 0.01, 0.01, 0.01],
    ['PHP', 'Python', 'Go', 'C++', 'Java'],
    ['blue', 'yellow', 'red', 'green', 'violet'],
    '%d%%',
    shadow=True,
    startangle=90
)

# 将饼图变成绝对的圆
mp.axis('equal')

mp.show()

3、测试效果:
44

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图) 的相关文章

随机推荐