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

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

程序员文章站 2023-01-30 13:35:12
文章目录写在前面:一、等高线图二、热力图三、饼图写在前面:import numpy as npimport 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, inli...

写在前面:

  • 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)线型:
荐
                                                        Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图)
2)色带型:
荐
                                                        Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图)

二、热力图

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、测试效果:
荐
                                                        Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图)

三、饼图

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、测试效果:
荐
                                                        Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图)

本文地址:https://blog.csdn.net/Viewinfinitely/article/details/107250068