""" 任务描述 相关知识 绘制三维曲线的方法plot() 绘制三维曲面的方法plot_surface() 绘制三维散点图的方法scatter(x,y,z,color) 生成随机数的方法numpy库中的random.randint(a,b,c) 一维数组元素切片方法array[start:end:step] 编程要求 测试说明 任务描述 本关任务:绘制三维曲线图和三维散点图。 相关知识 为了完成本关任务,请认真阅读以下相关知识。 mpl_toolkits.mplot3d是Matplotlib里面专门用来画三维图的工具包,导入该库,即可绘制三维图形。 如果要绘制三维图形,首先需要使用下面的语句导入相应的对象: import mpl_toolkits.mplot3d 然后使用下面的方法创建三维子图: ax=plt.subplot(projection='3d') 接下来就可以使用ax的plot()方法绘制三维曲线、plot_surface()方法绘制三维曲面、scatter()方法绘制三维散点图。 绘制三维曲线的方法plot() 代码示例如下: 导入库 import numpy as np import matplotlib.pyplot as plt import mpl_toolkits.mplot3d 绘制三维坐标系 ax=plt.subplot(111,projection='3d') 生成绘图数据 x=np.linspace(0,2*np.pi,300) y=np.linspace(0,3*np.pi,300) z=50*np.sin(x+y) 绘制三维曲线 ax.plot(x,y,z) plt.show() 上述代码呈现下面的效果: 绘制三维曲面的方法plot_surface() plot_surface(X, Y, Z, rstride,cstride,color) 参数说明: X,Y,Z:指定三个坐标轴的数据。 rstride,cstride:分别控制x和y两个方向的步长,这决定了曲面上每个面片的大小。 color:用来指定面片的颜色 绘制三维散点图的方法scatter(x,y,z,color) 参数说明: x,y,z: 指定散点符号的x、y、z坐标 color:用来指定散点的颜色 生成随机数的方法numpy库中的random.randint(a,b,c) 参数说明: a:生成随机数的下限。 b:生成随机数的上限。 c:随机数的个数。 一维数组元素切片方法array[start:end:step] 功能:获取一维数组array中从start到end(不包括end)以step为步长所对应元素组成的数组。 step可省略,默认为1。 代码示例如下: >>array = np.arange(10) #生成0-9,步长为1的数组 >>print(array) >>[0 1 2 3 4 5 6 7 8 9] #数组元素 >> print(array[3:5]) #获取索引从3到5的数组元素组成的数组 >>[3 4] 编程要求 在2行2列的绘图区域中绘制三维曲线、曲面和散点点图,要求如下: 1.在第一个绘图区域绘制一条给定数据的三维曲线; 2.在第二个绘图区域绘制一条z=50*sin(x+y)三维曲面,x,y两个方向的步长分别为2,3。 3.在第三个绘图区域绘制三维散点图,x,y,z三个坐标轴的数值分别0-50之间的30个随机数。30个点中,前10个点红色,中间10个点蓝色,最后10个点黄色。 测试说明 平台会对你编写的代码进行测试,若是与预期输出相同,则算通关。 预期输出: 你的答案与正确答案一致 开始你的任务吧,祝你成功! """ import numpy as np import matplotlib.pyplot as plt import mpl_toolkits.mplot3d def level4(): #绘制三维曲线 plt.figure(figsize=(10, 10)) #**********begin**********# #绘制三维坐标系ax1在二行二列区域的第1个区域中 ax1=plt.subplot(221,projection='3d') #生成绘图数据 x1=np.linspace(0,2*np.pi,300) y1=np.linspace(0,3*np.pi,300) z1=50*np.sin(x1+y1) #(1)利用plot()绘制曲线(x1,y1,z1)到ax1 ax1.plot(x1,y1,z1) #(2)绘制三维坐标系ax2在二行二列区域的第2个区域中 ax2=plt.subplot(222,projection='3d') #生成绘图数据 x2,y2=np.mgrid[-2:2:20j,-2:2:20j] z2=50*np.sin(x2+y2) #(3)利用plot_surface(x2,y2,z2)绘制曲面到ax2,x方向(rstride)步长为2,y方向(cstride)步长为3 ax2.plot_surface(x2,y2,z2,rstride=2,cstride=3) #(4)绘制三维坐标系ax3在二行二列区域的第3个区域中 ax3=plt.subplot(223,projection='3d') #生成绘图数据 x3=np.random.randint(0,50,30) y3=np.random.randint(0,50,30) z3=np.random.randint(0,50,30) #(5)(x3,y3,z3)按区域绘制不同颜色散点图:[0:10]红色,[10:20]蓝色,[20:30]黄色 ax3.scatter(x3[0:10],y3[0:10],z3[0:10],color='r') ax3.scatter(x3[10:20],y3[10:20],z3[10:20],color='b') ax3.scatter(x3[20:30],y3[20:30],z3[20:30],color='y') #**********end**********# #将绘制的图形保存为指定路径下的图片 plt.savefig("task4/image1/t4.png") #显示创建的绘图对象 plt.show()