栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【python学习】-用matplotlib实现将二维数据绘制为三维图形(三维多线图)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【python学习】-用matplotlib实现将二维数据绘制为三维图形(三维多线图)

用matplotlib实现将二维数据绘制为三维图形(三维多线图)
  • 绘制一幅三维线图
  • 结合for循环绘制多幅三维线图(在一幅图上)
  • 美化图形

绘制一幅三维线图
#将二维数据绘制三维图(三维多线图)
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,20,40)
y=2
y=y*np.ones(40)#保证与x轴的点数一致,这一步非常重要
z=np.sin(x * 2 * np.pi) / 2 + 0.5

ax = plt.figure().add_subplot(projection='3d')
ax.plot(x,y,z)#绘图

# 图像的其他参数设置
ax.view_init(15, -20)#图形展示角度
#ax.grid(False)#去掉网格
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))#背景设置为白色
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
#坐标及坐标轴相关设置
ax.set_xlabel('x') #x轴坐标名称及字体样式
ax.set_ylabel('y') #x轴坐标名称及字体样式
ax.set_zlabel('z') #z轴坐标名称及字体样式
#ax.set_xlim(0,20)#x轴范围
#ax.set_zlim(0,40)
ax.set_yticks([1,2,3,4,5]) #y轴刻度字体大小
plt.show()

结合for循环绘制多幅三维线图(在一幅图上)
#将二维数据绘制三维图(三维多线图)
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,20,40)
y_list=[1,3,5]

z=np.sin(x * 2 * np.pi) / 2 + 0.5

ax = plt.figure().add_subplot(projection='3d')
#结合for循环绘制多张线图
for i in range(0,3,1):
    y=y_list[i]
    y=y*np.ones(40)#保证与x轴的点数一致,这一步非常重要
    ax.plot(x,y,z)#绘图

# 图像的其他参数设置
ax.view_init(15, -20)#图形展示角度
#ax.grid(False)#去掉网格
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))#背景设置为白色
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
#坐标及坐标轴相关设置
ax.set_xlabel('x') #x轴坐标名称及字体样式
ax.set_ylabel('y') #x轴坐标名称及字体样式
ax.set_zlabel('z') #z轴坐标名称及字体样式
#ax.set_xlim(0,20)#x轴范围
#ax.set_zlim(0,40)
ax.set_yticks([1,2,3,4,5]) #y轴刻度字体大小
plt.show()

美化图形

主要是调整图形清晰度,坐标轴以及图形颜色,线的粗细,添加label

#美化图形
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,20,40)
y_list=[1,3,5]
z=np.sin(x * 2 * np.pi) / 2 + 0.5
color_list=['red','tab:blue','tab:green']#颜色
font3 = {'family' : 'Arial',
    'weight' : 'normal',
    'size'   : 14,
    }
ax = plt.figure().add_subplot(projection='3d')
#结合for循环绘制多张线图
for i in range(0,3,1):
    y=y_list[i]
    y=y*np.ones(40)#保证与x轴的点数一致,这一步非常重要
    ax.plot(x,y,z,linewidth=1,label='y='+str(y_list[i]),color=color_list[i])#绘图

# 图像的其他参数设置
ax.view_init(15, -20)#图形展示角度
ax.grid(False)#去掉网格
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))#背景设置为白色
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
#坐标及坐标轴相关设置
ax.legend(frameon=False,fontsize='small',loc='center left') #设置图例及图中文本显示
ax.set_xlabel('x',font3) #x轴坐标名称及字体样式
ax.set_ylabel('y',font3) #x轴坐标名称及字体样式
ax.set_zlabel('z',font3) #z轴坐标名称及字体样式
ax.set_xlim(0,20)#x轴范围
#ax.set_zlim(0,40)
ax.set_yticks([1,2,3,4,5]) #y轴刻度字体大小

plt.rcParams['figure.figsize']=(8.0,6.0)
plt.rcParams['savefig.dpi'] = 200 #图片像素
plt.rcParams['figure.dpi'] = 200 #分辨率
plt.show()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339148.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号