荐 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)线型:
2)色带型:
二、热力图
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、测试效果:
三、饼图
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、测试效果:
本文地址:https://blog.csdn.net/Viewinfinitely/article/details/107250068