• Python绘图-14绘制3D图(下)


    14.7绘制3D等高线图性化colormap

    14.7.1图像呈现

    14.7.2绘图代码

    1. import numpy as np # 导入numpy库,numpy是Python的一个强大的数值计算扩展程序库,支持大量的维度数组与矩阵运算。
    2. import matplotlib.pyplot as plt # 导入matplotlib的绘图模块pyplot,用于绘制二维和三维图形。
    3. from matplotlib import rcParams # 从matplotlib库中导入rcParams,rcParams是一个字典对象,用于处理matplotlib的全局配置参数。
    4. # 定义一个字典config,该字典包含字体、大小和其他相关的配置参数,用于自定义图形的显示样式。
    5. config = {
    6. "font.family": 'serif', # 设置字体族为衬线字体。
    7. "font.size": 10.5, # 设置字体大小为10.5
    8. "mathtext.fontset": 'stix', # 设置数学文本的字体集为'stix'
    9. "font.serif": ['SimSun'] # 设置衬线字体为'SimSun'(即宋体)。
    10. }
    11. rcParams.update(config) # 使用config字典中的配置参数更新matplotlib的全局配置参数rcParams。
    12. plt.rcParams['axes.unicode_minus'] = False # 设置配置参数,确保在图形中正常显示负号。
    13. N = 100 # 定义数据点的数量,这里用于生成X、Y坐标和对应的Z值。
    14. np.random.seed(3124) # 设置随机数种子,确保每次生成的随机数序列相同,方便结果复现。
    15. # 生成N个在-22之间均匀分布的数,然后加上随机噪声,生成x和y的坐标值。
    16. x = np.linspace(-2, 2, N) + np.random.random(N)
    17. y = np.linspace(-2, 2, N) + np.random.random(N)
    18. # 使用meshgrid函数根据x和y坐标生成网格化的X和Y坐标矩阵。
    19. X, Y = np.meshgrid(x, y)
    20. # 根据X和Y坐标矩阵计算对应的Z值,这里Z是X的正弦值和Y的余弦值的和。
    21. Z = np.sin(X) + np.cos(Y)
    22. # 创建一个新的图形窗口,并设置其大小为10x6英寸,分辨率为110像素/英寸。
    23. fig = plt.figure(figsize=(10, 6), dpi=110)
    24. # 创建一个3D坐标轴的子图。
    25. ax = plt.axes(projection='3d')
    26. # 使用contour3D方法绘制等高线图,并设置等高线数量为256,使用'Spectral'颜色映射。
    27. p = ax.contour3D(X,Y,Z,256, cmap='Spectral' )# 个性化colormap # 设置等高线的数量
    28. # 设置x轴的标签。
    29. ax.set_xlabel('x')
    30. # 设置y轴的标签。
    31. ax.set_ylabel('y')
    32. # 设置z轴的标签。
    33. ax.set_zlabel('z')
    34. # 设置3D坐标轴的长宽比。
    35. ax.set_box_aspect((3, 3, 1))
    36. # 设置3D视角,其中Elevation为60°,Azimuth为100°。
    37. ax.view_init(60, 100)
    38. # 创建一个颜色条来显示等高线的颜色对应的Z值。
    39. plt.colorbar(p)
    40. # 设置子图的标题。
    41. ax.set_title('Contour counts = 256, elevation = 60, azimuth = 100')
    42. # 显示图形窗口。
    43. plt.show()

    这段代码的主要功能是生成一组随机的x和y坐标,然后计算对应的Z值(基于正弦和余弦函数),并使用matplotlib绘制出三维等高线图。代码中设置了等高线的数量、颜色映射、坐标轴标签、视角等,使得图形更加易于理解和分析。 

    14.8更科学的3D等高线图方法

    14.8.1图像呈现

    14.8.2绘图代码

    1. import numpy as np # 导入numpy库,numpy是Python的一个强大的数值计算扩展程序库,它支持大量的维度数组与矩阵运算。
    2. import matplotlib.pyplot as plt # 导入matplotlib的绘图模块pyplot,用于绘制二维和三维图形。
    3. from matplotlib import rcParams # 从matplotlib库中导入rcParams,rcParams是一个字典对象,用于处理matplotlib的全局配置参数。
    4. # 定义一个字典config,用于设置图形的字体、大小和其他相关配置参数。
    5. config = {
    6. "font.family": 'serif', # 设置字体族为衬线字体。
    7. "font.size": 10.5, # 设置字体大小为10.5
    8. "mathtext.fontset": 'stix', # 设置数学文本的字体集为'stix'
    9. "font.serif": ['SimSun'] # 设置衬线字体为'SimSun'(即宋体)。
    10. }
    11. rcParams.update(config) # 使用config字典中的配置参数来更新matplotlib的全局配置参数rcParams。
    12. # 设置配置参数,确保在图形中正常显示负号。
    13. plt.rcParams['axes.unicode_minus'] = False
    14. # 设置数据点的数量为100
    15. N = 100
    16. # 设置随机数种子,确保每次生成的随机数序列相同,便于结果复现。
    17. np.random.seed(3124)
    18. # 生成在-22之间均匀分布的N个数据点,并加上随机噪声。
    19. x = np.linspace(-2, 2, N) + np.random.random(N)
    20. y = np.linspace(-2, 2, N) + np.random.random(N)
    21. # 使用meshgrid函数根据x和y坐标生成网格化的X和Y坐标矩阵。
    22. X, Y = np.meshgrid(x, y)
    23. # 根据X和Y坐标矩阵计算对应的Z值,这里Z是X的正弦值和Y的余弦值的和。
    24. Z = np.sin(X) + np.cos(Y)
    25. # 创建一个新的图形窗口,并设置其大小为14x6英寸,分辨率为110像素/英寸。
    26. plt.figure(figsize=(14, 6), dpi=110)
    27. # 创建一个3D坐标轴的子图,位于1x2网格的第1个位置。
    28. ax1 = plt.subplot(121, projection='3d')
    29. # 使用contour方法绘制等高线图,并设置颜色映射为'Spectral'
    30. ax1.contour(X, Y, Z, cmap='Spectral')
    31. # 设置x轴的标签。
    32. ax1.set_xlabel('x')
    33. # 设置y轴的标签。
    34. ax1.set_ylabel('y')
    35. # 设置z轴的标签。
    36. ax1.set_zlabel('z')
    37. # 设置3D坐标轴的长宽比。
    38. ax1.set_box_aspect((3, 3, 1))
    39. # 设置3D视角,其中Elevation为10°,Azimuth为100°。
    40. ax1.view_init(10, 100)
    41. # 设置子图的标题。
    42. ax1.set_title('Contour Default, elevation = 10, azimuth = 100')
    43. # 创建一个新的3D坐标轴的子图,位于1x2网格的第2个位置。
    44. ax2 = plt.subplot(122, projection='3d')
    45. # 使用contourf方法绘制填充等高线图,并设置颜色映射为'Spectral'
    46. ax2.contourf(X, Y, Z, cmap='Spectral')
    47. # 设置x轴的标签。
    48. ax2.set_xlabel('x')
    49. # 设置y轴的标签。
    50. ax2.set_ylabel('y')
    51. # 设置z轴的标签。
    52. ax2.set_zlabel('z')
    53. # 设置3D坐标轴的长宽比。
    54. ax2.set_box_aspect((3, 3, 1))
    55. # 设置3D视角,其中Elevation为10°,Azimuth为100°。
    56. ax2.view_init(10, 100)
    57. # 设置子图的标题。
    58. ax2.set_title('Contourf Default, elevation = 10, azimuth = 100')
    59. # 显示图形窗口。
    60. plt.show()

    14.9绘制3D线框图

    14.9.1图像呈现

    14.9.2绘图代码

    1. import numpy as np # 导入numpy库,numpy是Python的一个开源数值计算扩展库,支持大量的维度数组与矩阵运算,提供大量的数学函数库来操作这些数组。
    2. import matplotlib.pyplot as plt # 导入matplotlib库中的pyplot模块,用于绘制二维和三维图形,实现数据的可视化。
    3. from matplotlib import rcParams # 从matplotlib库中导入rcParams,rcParams是一个配置字典,用于定制图形的各种默认属性。
    4. # 定义一个字典config,用于存储matplotlib的配置参数,这里主要设置了字体、大小和其他相关属性。
    5. config = {
    6. "font.family": 'serif', # 设置字体族为衬线字体。
    7. "font.size": 10.5, # 设置字体大小为10.5
    8. "mathtext.fontset": 'stix', # 设置数学文本的字体集为'stix'
    9. "font.serif": ['SimSun'] # 设置衬线字体为'SimSun'(即宋体)。
    10. }
    11. rcParams.update(config) # 使用config字典中的配置参数来更新matplotlib的全局配置参数rcParams,从而定制图形的外观。
    12. plt.rcParams['axes.unicode_minus'] = False # 设置配置参数,确保在图形中正常显示负号,防止负号显示为方块或其他非预期字符。
    13. N = 100 # 设置变量N的值为100,用于定义后续生成的x和y坐标点的数量。
    14. np.random.seed(3124) # 设置随机数种子为3124,以确保每次运行代码时生成的随机数序列都是相同的,便于结果复现。
    15. x = np.linspace(-2, 2, N) + np.random.random(N) # 生成从-22之间均匀分布的N个数据点,并加上一个01之间的随机噪声,作为x坐标。
    16. y = np.linspace(-2, 2, N) + np.random.random(N) # 同样生成从-22之间均匀分布的N个数据点,并加上随机噪声,作为y坐标。
    17. X, Y = np.meshgrid(x, y) # 使用meshgrid函数根据x和y坐标生成网格化的X和Y坐标矩阵,用于后续的三维绘图。
    18. Z = np.sin(X) + np.cos(Y) # 根据X和Y坐标矩阵计算对应的Z值,这里Z是X的正弦值和Y的余弦值的和。
    19. fig = plt.figure(figsize=(6, 6), dpi=110) # 创建一个新的图形窗口,并设置其大小为6x6英寸,分辨率为110像素/英寸。
    20. ax = plt.axes(projection='3d') # 在图形窗口中添加一个3D坐标轴的子图。
    21. ax.plot_wireframe(X, Y, Z, color='k', alpha=.2) # 使用plot_wireframe方法绘制三维线框图,设置线条颜色为黑色('k'),并设置透明度为0.2
    22. plt.show() # 显示图形窗口,展示绘制的三维线框图。

    这段代码的主要功能是生成一个三维线框图,其中x和y坐标是带有随机噪声的均匀分布数据,而z坐标是这些x和y坐标的正弦和余弦值的和。绘制的图形通过matplotlib库进行可视化,并且使用了自定义的配置参数来调整图形的外观。

    14.10绘制3D曲面图

    14.10.1图像呈现

    14.10.2绘图代码

    1. import numpy as np # 导入numpy库,numpy是Python的一个开源数值计算扩展库,支持大量的维度数组与矩阵运算,提供大量的数学函数库来操作这些数组。
    2. import matplotlib.pyplot as plt # 导入matplotlib库的pyplot模块,它提供了用于绘制图形和图像的函数。
    3. from matplotlib import rcParams # 从matplotlib库中导入rcParams,rcParams是一个配置字典,用于定制图形的各种默认属性。
    4. # 定义一个字典config,其中包含字体、大小和其他相关的配置参数
    5. config = {
    6. "font.family": 'serif', # 设置字体族为衬线字体。
    7. "font.size": 12, # 设置字体大小为12
    8. "mathtext.fontset": 'stix', # 设置数学文本的字体集为'stix'
    9. "font.serif": ['SimSun'] # 设置衬线字体为'SimSun'(即宋体)。
    10. }
    11. rcParams.update(config) # 使用config字典中的配置参数来更新matplotlib的全局配置参数rcParams,从而定制图形的外观。
    12. plt.rcParams['axes.unicode_minus'] = False # 设置配置参数,确保在图形中正常显示负号,防止负号显示为方块或其他非预期字符。
    13. N = 100 # 设定数据点的数量为100,用于生成x和y的坐标点。
    14. np.random.seed(3124) # 设置随机数种子为3124,确保每次运行代码时生成的随机数序列相同,以便结果可复现。
    15. x = np.linspace(-2, 2, N) + np.random.random(N) # 生成从-22之间均匀分布的N个数据点,并加上一个01之间的随机噪声,作为x坐标。
    16. y = np.linspace(-2, 2, N) + np.random.random(N) # 同样生成从-22之间均匀分布的N个数据点,并加上随机噪声,作为y坐标。
    17. X, Y = np.meshgrid(x, y) # 使用meshgrid函数根据x和y坐标生成网格化的X和Y坐标矩阵,用于后续的三维绘图。
    18. Z = np.sin(X) + np.cos(Y) # 根据X和Y坐标矩阵计算对应的Z值,这里Z是X的正弦值和Y的余弦值的和。
    19. fig = plt.figure(figsize=(8, 8), dpi=110) # 创建一个新的图形窗口,设置其大小为8x8英寸,分辨率为110像素/英寸。
    20. ax = plt.axes(projection='3d') # 在图形窗口中添加一个3D坐标轴的子图,用于绘制三维图形。
    21. # 绘制三维曲面图
    22. ax.plot_surface(X, Y, Z, ) # 使用plot_surface方法绘制三维曲面图,X、Y为坐标矩阵,Z为高度矩阵。
    23. ax.set_xlabel('x') # 设置x轴的标签为'x'
    24. ax.set_ylabel('y') # 设置y轴的标签为'y'
    25. ax.set_zlabel('z') # 设置z轴的标签为'z'
    26. ax.set_box_aspect((2, 2, 1)) # 设置x、y、z轴的显示比例,使得图形不会因轴的伸缩而变形。
    27. ax.view_init(10, 100) # 设置观察三维图形的视角,第一个参数是仰角(elevation),第二个参数是方位角(azimuth)。
    28. ax.set_title('Plot surface Default, elevation = 10, azimuth = 100') # 设置图形的标题。
    29. plt.show() # 显示图形窗口,展示绘制的三维曲面图。

    这段代码的主要功能是生成一个三维曲面图,其中x和y坐标是带有随机噪声的均匀分布数据,而z坐标是这些x和y坐标的正弦和余弦值的和。绘制的图形通过matplotlib库进行可视化,并且使用了自定义的配置参数来调整图形的外观。

    14.11 3D曲面图指定cstriderstride

    14.11.1图像呈现

    14.11.2绘图代码

    1. import numpy as np # 导入numpy库,numpy是Python的一个用于数值计算的扩展库,提供了大量的数学函数来处理数组和矩阵。
    2. import matplotlib.pyplot as plt # 导入matplotlib库的pyplot模块,用于绘制各种静态、动态、交互式的可视化图形。
    3. from matplotlib import rcParams # 从matplotlib库中导入rcParams,rcParams是一个配置字典,用于定制图形的各种默认属性。
    4. # 定义一个字典config,其中包含字体、大小和其他相关的配置参数
    5. config = {"font.family": 'serif', # 设置字体族为衬线字体
    6. "font.size": 10.5, # 设置字体大小为10.5
    7. "mathtext.fontset": 'stix', # 设置数学文本的字体集为'stix'
    8. "font.serif": ['SimSun']} # 设置衬线字体为'SimSun'(即宋体)
    9. rcParams.update(config) # 使用config字典中的配置参数来更新matplotlib的全局配置参数rcParams,以定制图形的外观。
    10. plt.rcParams['axes.unicode_minus'] = False # 设置配置参数,确保在图形中正常显示负号,防止负号显示为方块或其他非预期字符。
    11. N = 200 # 设定数据点的数量为200,用于生成x和y的坐标点。
    12. np.random.seed(3124) # 设置随机数种子为3124,确保每次运行代码时生成的随机数序列相同,以便结果可复现。
    13. x = np.linspace(-2, 2, N) + np.random.random(N) # 生成从-22之间均匀分布的N个数据点,并加上一个01之间的随机噪声,作为x坐标。
    14. y = np.linspace(-2, 2, N) + np.random.random(N) # 同样生成从-22之间均匀分布的N个数据点,并加上随机噪声,作为y坐标。
    15. X, Y = np.meshgrid(x, y) # 使用meshgrid函数根据x和y坐标生成网格化的X和Y坐标矩阵,用于后续的三维绘图。
    16. Z = np.sin(X) + np.cos(Y) # 根据X和Y坐标矩阵计算对应的Z值,这里Z是X的正弦值和Y的余弦值的和。
    17. fig = plt.figure(figsize=(14, 6)) # 创建一个新的图形窗口,设置其大小为14x6英寸。
    18. # 创建第一个3D子图
    19. ax1 = plt.subplot(121, projection='3d') # 在图形窗口中添加一个1x2布局中的第1个子图,并设置其为3D坐标轴。
    20. ax1.plot_surface(X, Y, Z, cmap='Spectral') # 使用plot_surface方法绘制三维曲面图,并设置颜色映射为'Spectral'
    21. ax1.set_xlabel('x') # 设置x轴的标签为'x'
    22. ax1.set_ylabel('y') # 设置y轴的标签为'y'
    23. ax1.set_zlabel('z') # 设置z轴的标签为'z'
    24. ax1.set_box_aspect((2, 2, 1)) # 设置x、y、z轴的显示比例,使得图形不会因轴的伸缩而变形。
    25. ax1.view_init(60, 100) # 设置观察三维图形的视角,第一个参数是仰角(elevation),第二个参数是方位角(azimuth)。
    26. ax1.set_title(
    27. 'Plot surface rstride = cstride = default, \n elevation = 60, azimuth = 100'
    28. ) # 设置子图的标题,并换行显示,说明当前的设置参数。
    29. # 创建第二个3D子图
    30. ax2 = plt.subplot(122, projection='3d') # 在图形窗口中添加一个1x2布局中的第2个子图,并设置其为3D坐标轴。
    31. ax2.plot_surface(X, Y, Z, cmap='Spectral', rstride=1, cstride=1) # 绘制三维曲面图,并设置颜色映射和行跨度(rstride)与列跨度(cstride)为1
    32. ax2.set_xlabel('x') # 设置x轴的标签为'x'
    33. ax2.set_ylabel('y') # 设置y轴的标签为'y'
    34. ax2.set_zlabel('z') # 设置z轴的标签为'z'
    35. ax2.set_box_aspect((2, 2, 1)) # 设置x、y、z轴的显示比例,确保图形的真实比例。
    36. ax2.view_init(60, 100) # 设置观察三维图形的视角,与第一个子图保持一致。
    37. ax2.set_title('Plot surface rstride = cstride = 1, \n elevation = 60, azimuth = 100') # 设置子图的标题,说明当前的rstride和cstride都设置为1
    38. plt.show() # 显示图形窗口,展示上述设置的两个子图。

    在这段代码中,我们创建了一个包含两个3D子图的图形窗口。每个子图都展示了由`X`、`Y`和`Z`坐标定义的三维曲面。两个子图的主要区别在于第二个子图设置了`rstride`和`cstride`参数为1,这会影响曲面在网格中的绘制密度。`rstride`和`cstride`分别代表行和列的跨度,值越小,绘制的网格越密集,但计算量也越大。第一个子图则使用了默认的`rstride`和`cstride`值。  此外,我们还通过`rcParams`和`plt.rcParams`定制了图形的字体、大小等外观参数,并通过`view_init`方法设置了观察图形的视角。  

    14.12绘制3D球

    14.12.1图像呈现

    14.12.2绘图代码

    1. import numpy as np # 导入numpy库,numpy是Python中用于处理数组和进行数值计算的库。
    2. import matplotlib.pyplot as plt # 导入matplotlib库的pyplot模块,pyplot提供了用于绘制各种图形的函数,常用于数据可视化。
    3. from matplotlib import rcParams # 从matplotlib库中导入rcParams,rcParams是一个配置字典,用于定制matplotlib的图形属性。
    4. # 定义一个字典config,该字典包含用于设置matplotlib图形的字体、大小和其他相关配置参数。
    5. config = {
    6. "font.family": 'serif', # 设置字体族为衬线字体。
    7. "font.size": 10.5, # 设置字体大小为10.5
    8. "mathtext.fontset": 'stix', # 设置数学文本的字体集为'stix'
    9. "font.serif": ['SimSun'] # 设置衬线字体为'SimSun',即宋体。
    10. }
    11. rcParams.update(config) # 使用config字典中的配置参数来更新matplotlib的全局配置参数rcParams,以定制图形的外观。
    12. # 设置配置参数,确保在图形中正常显示负号,防止负号显示为方块或其他非预期字符。
    13. plt.rcParams['axes.unicode_minus'] = False
    14. # 生成从02π的100个等间隔的数值,用于后续的三角函数计算。
    15. u = np.linspace(0, 2 * np.pi, 100)
    16. # 生成从0到π的100个等间隔的数值,用于后续的三角函数计算。
    17. v = np.linspace(0, np.pi, 100)
    18. #使用np.outer函数计算x坐标,这里通过u的余弦和v的正弦计算出一个矩阵,每个点对应矩阵中的一个值。
    19. x = 10 * np.outer(np.cos(u), np.sin(v))
    20. # 使用np.outer函数计算y坐标,这里通过u的正弦和v的正弦计算出一个矩阵。
    21. y = 10 * np.outer(np.sin(u), np.sin(v))
    22. # 使用np.outer函数计算z坐标,这里通过u上所有值为1的数组和v的余弦计算出一个矩阵。
    23. z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
    24. # 创建一个新的图形窗口,并设置其大小为10x10英寸。
    25. plt.figure(figsize=(10, 10))
    26. # 在图形窗口中添加一个3D坐标轴的子图。
    27. ax = plt.subplot(projection='3d')
    28. # 使用plot_surface方法在3D子图上绘制一个曲面,并使用'inferno'颜色映射。
    29. ax.plot_surface(x, y, z, cmap='inferno') # plot_surface
    30. # 显示图形窗口及其中的图形内容。
    31. plt.show()

    在这段代码中,首先导入了必要的库,并设置了matplotlib的字体和大小等属性。然后,使用numpy库生成了两个一维数组uv,并通过numpyouter函数和三角函数计算了三维空间中曲面的xyz坐标。最后,使用matplotlibpyplot模块创建了一个3D图形,并在其中绘制了曲面。plot_surface方法用于绘制三维曲面,cmap='inferno'设置了曲面的颜色映射。

    14.13修改3D视角

    14.13.1图像呈现

    14.13.2绘图代码

    1. import numpy as np # 导入numpy库,并为其设置别名np。numpy是一个用于处理数组和进行数值计算的库。
    2. import matplotlib.pyplot as plt # 导入matplotlib的绘图模块pyplot,并为其设置别名plt。matplotlib是一个绘图库,pyplot提供了绘制各种图形的函数。
    3. from matplotlib import rcParams # 从matplotlib库中导入rcParams,rcParams是一个配置字典,用于定制matplotlib图形的各种属性。
    4. # 定义一个字典config,其中包含用于定制matplotlib图形的字体、大小和其他相关的配置参数。
    5. config = {
    6. "font.family": 'serif', # 设置字体族为衬线字体。
    7. "font.size": 10.5, # 设置字体大小为10.5
    8. "mathtext.fontset": 'stix', # 设置数学文本的字体集为'stix'
    9. "font.serif": ['SimSun'] # 设置衬线字体为'SimSun',即宋体。
    10. }
    11. rcParams.update(config) # 使用config字典中的配置参数来更新matplotlib的全局配置参数rcParams。
    12. # 设置matplotlib配置参数,确保在图形中正常显示负号,防止负号显示为方块或其他非预期字符。
    13. plt.rcParams['axes.unicode_minus'] = False
    14. # 生成从02π的100个等间隔的数值,用于后续的三角函数计算。
    15. u = np.linspace(0, 2 * np.pi, 100)
    16. # 生成从0到π的100个等间隔的数值,用于后续的三角函数计算。
    17. v = np.linspace(0, np.pi, 100)
    18. # 使用np.outer函数计算x坐标,这里通过u的余弦和v的正弦计算出一个矩阵。
    19. x = 10 * np.outer(np.cos(u), np.sin(v))
    20. # 使用np.outer函数计算y坐标,这里通过u的正弦和v的正弦计算出一个矩阵。
    21. y = 10 * np.outer(np.sin(u), np.sin(v))
    22. # 使用np.outer函数计算z坐标,这里通过u上所有值为1的数组和v的余弦计算出一个矩阵。
    23. z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
    24. # 定义网格布局的行数和列数
    25. rows = 2
    26. columns = 2
    27. # 创建一个网格布局对象,并设置行与列之间的间距
    28. grid = plt.GridSpec(rows, columns, wspace=.2, hspace=.2)
    29. # 生成一个从040,步长为10的数组,用于表示图形的仰角(elevation)
    30. elev = np.arange(0, 40, 10)
    31. # 生成一个从0200,步长为50的数组,用于表示图形的方位角(azimuth)
    32. azim = np.arange(0, 200, 50)
    33. # 创建一个新的图形窗口,并设置其大小为12x12英寸。
    34. plt.figure(figsize=(12, 12))
    35. # 遍历所有子图位置
    36. for i in range(rows * columns):
    37. # 根据当前遍历的索引i,使用grid布局创建一个3D子图
    38. ax = plt.subplot(grid[i], projection='3d')
    39. # 在子图上绘制曲面,并设置颜色映射为'inferno'
    40. ax.plot_surface(x, y, z, cmap='inferno')
    41. # 设置子图的视角,包括仰角和方位角
    42. ax.view_init(elev[i], azim[i])
    43. # 为子图设置标题,显示当前的仰角和方位角
    44. ax.set_title('Elevation = ' + str(elev[i]) + ', Azimuth = ' + str(azim[i]))
    45. # 显示图形窗口及其中的图形内容。
    46. plt.show()

      

  • 相关阅读:
    ResourceManager启动报错:Queue configuration missing child queue names for root【已解决】
    蓝桥杯倒计时 41天 - KMP 算法
    SAP STMS请求重复传输
    十年老Python程序员:给我一个链接,没有我不能爬的视频,只有我顶不住的视频
    【JVM故障问题排查心得】「内存诊断系列」JVM内存与Kubernetes中pod的内存、容器的内存不一致所引发的OOMKilled问题总结(上)
    阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller
    民国漫画杂志《时代漫画》第31期.PDF
    丰田+比亚迪「围攻」大众,明年或将「让出」榜首之位
    轻量级的搜索引擎MeiliSearch
    神秘的锦衣卫
  • 原文地址:https://blog.csdn.net/2202_75971130/article/details/136620909