赞
踩
1. 绘制三维曲面图及其投影图
2. 绘制曲面图
3. 绘制曲面投影图
4. 同时绘制曲面图和投影图,用两个图展示
5. 绘制曲面图
6. 同时绘制曲面图及其二维填色图
数据分析包括探索、清理和转换数据以从中提取有用信息。Python有许多库可以使数据分析变得更容易,例如Pandas、NumPy和SciPy。以下是使用Python进行数据分析的基本步骤:
加载数据:您可以使用Pandas从各种来源加载数据,例如CSV、Excel文件、SQL数据库或API。
探索数据:使用Pandas查看数据及其结构。您可以检查空值、数据类型和摘要统计信息。此步骤有助于更好地了解数据并识别任何问题。
清理数据:您可以使用Pandas处理缺失值、重复值、异常值和不正确的数据。在分析数据之前,数据清理是必不可少的步骤。
转换数据:Pandas提供了一些转换数据的工具,包括筛选、分组、合并和透视。此步骤有助于为分析数据做准备。
分析数据:您可以使用Python库,例如NumPy、SciPy和Pandas进行各种类型的分析,包括统计分析、机器学习和数据建模。
可视化是传达数据洞察力和模式的强大工具。Python有许多数据可视化库,包括Matplotlib、Seaborn和Plotly。以下是使用Python创建可视化的基本步骤:
加载数据:您可以像上面描述的那样加载数据。
选择可视化:选择适当的可视化方式,例如散点图、条形图、热图等。
创建可视化:使用所选库创建可视化,包括选择数据、定义图表类型和自定义图表外观。
自定义可视化:您可以自定义图表的各种特征,包括轴标签、标题、颜色和注释。
保存或显示可视化:一旦您创建和自定义了可视化,可以将其保存到文件或在Jupyter笔记本或其他Python环境中显示。
使用Python进行数据分析和可视化是一个广阔的领域,这仅仅是一个概述。
- import matplotlib.pyplot as plt
- from mpl_toolkits.mplot3d import Axes3D
- import numpy as np
-
- # 创建三维图形
- fig = plt.figure()
- ax = fig.add_subplot(111, projection='3d')
-
- # 生成数据
- x = np.arange(-5, 5, 0.25)
- y = np.arange(-5, 5, 0.25)
- x, y = np.meshgrid(x, y)
- r = np.sqrt(x ** 2 + y ** 2)
- z = np.sin(r)
-
- # 绘制曲面图
- ax.plot_surface(x, y, z, cmap='viridis')
-
- # 绘制投影图
- ax.contourf(x, y, z, zdir='z', offset=-15, cmap='viridis')
-
- # 调整Z方向距离
- ax.set_zlim(-15, 3)
-
- # 显示图形
- plt.show()
这是一个使用matplotlib
库创建3D图形的Python代码,包括曲面图和等高线投影图。
代码的第一部分导入必要的库并设置3D图形。第二部分生成数据,该数据是x
和y
的函数,并使用numpy
库计算相应的z
值。第三部分使用ax.plot_surface()
函数绘制曲面图和ax.contourf()
函数绘制等高线投影图。cmap
参数指定用于绘图的颜色映射。
ax.set_zlim()
函数用于调整Z轴限制,并使用plt.show()
函数显示图形。
总体而言,该代码创建了一个3D图形,其中包括曲面图和等高线投影图,使用颜色映射来显示函数在z
方向上的变化。
- import matplotlib.pyplot as plt
- from mpl_toolkits.mplot3d import Axes3D
- import numpy as np
-
- # 创建三维图形
- fig = plt.figure()
- ax = fig.add_subplot(111, projection='3d')
-
- # 生成数据
- x = np.arange(5)
- y = np.arange(5)
- x, y = np.meshgrid(x, y)
- z = np.array([[0, 1, 2, 3, 4],
- [5, 6, 7, 8, 9],
- [10, 11, 12, 13, 14],
- [15, 16, 17, 18, 19],
- [20, 21, 22, 23, 24]])
-
- # 绘制曲面图
- ax.plot_surface(x, y, z)
-
- # 设置坐标轴标签
- ax.set_xlabel('X')
- ax.set_ylabel('Y')
- ax.set_zlabel('Z')
-
- # 显示图形
- plt.show()
- import numpy as np
- import matplotlib.pyplot as plt
- from scipy.interpolate import griddata
-
- # 加载数据
- data = np.loadtxt('fes.dat')
- x = data[:, 0]
- y = data[:, 1]
- z = data[:, 2]*4.3597*6.022*100
-
- # 定义网格
- xi = np.linspace(min(x), max(x), 100)
- yi = np.linspace(min(y), max(y), 100)
- X, Y = np.meshgrid(xi, yi)
-
- # 插值数据到网格上
- Z = griddata((x, y), z, (X, Y), method='cubic')
-
- # 绘制投影图
- plt.imshow(Z, cmap='viridis', extent=[min(xi), max(xi), min(yi), max(yi)], origin='lower')
-
- # 添加标签和标题
- plt.xlabel('X')
- plt.ylabel('Y')
- plt.title('等高线投影图')
-
- # 添加色标
- plt.colorbar()
-
- # 显示图形
- plt.show()
- import numpy as np
- import matplotlib.pyplot as plt
- from scipy.interpolate import griddata
- from mpl_toolkits.mplot3d import Axes3D
-
- # 加载数据
- data = np.loadtxt('fes.dat')
- x = data[:, 0]
- y = data[:, 1]
- z = data[:, 2]*4.3597*6.022*100
-
- # 定义网格
- xi = np.linspace(min(x), max(x), 100)
- yi = np.linspace(min(y), max(y), 100)
- X, Y = np.meshgrid(xi, yi)
-
- # 插值数据到网格上
- Z = griddata((x, y), z, (X, Y), method='cubic')
-
- # 绘制投影图
- fig = plt.figure(figsize=(10, 5))
-
- ax1 = fig.add_subplot(1, 2, 1)
- im = ax1.imshow(Z, cmap='viridis', extent=[min(xi), max(xi), min(yi), max(yi)], origin='lower')
- ax1.set_xlabel('X')
- ax1.set_ylabel('Y')
- ax1.set_title('等高线投影图')
- fig.colorbar(im, ax=ax1)
-
- # 绘制曲面图
- ax2 = fig.add_subplot(1, 2, 2, projection='3d')
- ax2.plot_surface(X, Y, Z, cmap='viridis')
- ax2.set_xlabel('X')
- ax2.set_ylabel('Y')
- ax2.set_zlabel('Z')
- ax2.set_title('3D曲面图')
-
- # 显示图形
- plt.show()
- import numpy as np
- import matplotlib.pyplot as plt
- from mpl_toolkits.mplot3d import Axes3D
-
- # 加载数据
- data = np.loadtxt('fes.dat')
- x = data[:, 0]
- y = data[:, 1]
- z = data[:, 2]*4.3597*6.022*100
-
- # 创建3D坐标轴
- fig = plt.figure()
- ax = fig.add_subplot(111, projection='3d')
-
- # 绘制曲面
- ax.plot_trisurf(x, y, z, cmap='viridis')
-
- # 添加标签和标题
- ax.set_xlabel('X')
- ax.set_ylabel('Y')
- ax.set_zlabel('Z')
- ax.set_title('曲面图')
-
- # 显示图形
- plt.show()
- import numpy as np
- import matplotlib.pyplot as plt
- from mpl_toolkits.mplot3d import Axes3D
- from scipy.interpolate import griddata
-
- # 设置 DPI,图像清晰度
- # 通常在 100 到 300 DPI 之间选择一个合适的值即可。如果需要更高的分辨率,可以考虑使用矢量格式的图像,如 PDF、SVG 等,它们不受 DPI 的限制,可以随意缩放而不会失去清晰度。
- plt.rcParams['figure.dpi'] = 600
-
- # 加载数据
- data = np.loadtxt('fes.dat')
- x = data[:, 0]
- y = data[:, 1]
- z = data[:, 2]*4.3597*6.022*100
-
- # 创建3D坐标轴
- fig = plt.figure()
- ax = fig.add_subplot(111, projection='3d')
-
- # 绘制曲面
- ax.plot_trisurf(x, y, z, cmap='viridis')
-
- # 添加标签和标题
- ax.set_xlabel('Ti-B coordination number')
- ax.set_ylabel('Ti-Al coordination number')
- ax.set_zlabel('Energy (kJ/mol)')
- ax.set_title('3-dimension contour and surface plot')
-
- # 定义网格
- xi = np.linspace(min(x), max(x)+0.5, 500)
- yi = np.linspace(min(y)-0.5, max(y), 500)
- X, Y = np.meshgrid(xi, yi)
-
- # 设置纵轴坐标刻度范围
- # ax.set_zlim(-30, 0)
-
- # 插值数据到网格上
- Z = griddata((x, y), z, (X, Y), method='linear')
-
- # 绘制投影图
- contour = ax.contourf(X, Y, Z, cmap='viridis', levels=40, offset=-25)
- # fig.colorbar(contour)
-
- # 添加colorbar
- # fig.add_axes() 方法用于在图形中添加新的坐标轴对象,参数指定了新坐标轴的位置和大小。这个方法接受一个参数列表 [left, bottom, width, height],这里的 left 表示新坐标轴的左边缘位置, bottom 表示下边缘位置, width 表示坐标轴的宽度, height 表示坐标轴的高度。
- cbar_ax = fig.add_axes([0.88, 0.10, 0.02, 0.7])
- fig.colorbar(contour, cax=cbar_ax)
-
- # 设置图片大小
- # fig.set_size_inches(10, 6)
-
- # 显示图形
- plt.show()
这个脚本从名为'fes.dat'的文件中加载数据,文件包含三列数据:第一列和第二列对应于二维平面上的x和y坐标,第三列对应于每个点的值z。脚本然后使用matplotlib将数据绘制成3D曲面,添加轴标签和标题,并使用scipy将数据插值到网格上。最后,它创建一个二维等高线图,将插值数据投影到x-y平面上,并显示整个图形。
以下是脚本的详细说明:
注意,# fig.colorbar(contour)
行被注释掉了。如果取消注释这行代码,它会向图中添加一个颜色条,显示颜色和z值之间的对应关系。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。