【python绘图(一)】Python数据分析和可视化
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进行数据分析和可视化是一个广阔的领域,这仅仅是一个概述。
1. 绘制三维曲面图及其等高线投影图
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
方向上的变化。
2. 绘制曲面图
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()
3. 加载三列数据文件,绘制曲面投影图
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()
4. 加载三列数据文件,同时绘制曲面图和投影图,用两个图展示
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()
5. 加载三列数据文件,绘制曲面图
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()
6. 在同一张图中绘制曲面图及其二维填色图
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平面上,并显示整个图形。
以下是脚本的详细说明:
- 导入必要的库:numpy、matplotlib、mpl_toolkits.mplot3d和scipy.interpolate。
- 使用numpy.loadtxt从文件'fes.dat'中加载数据,并将x、y和z数据提取到单独的数组中。
- 创建一个新的图形并添加一个3D轴,使用matplotlib.pyplot.figure和matplotlib.pyplot.subplot。
- 使用mpl_toolkits.mplot3d.Axes3D.plot_trisurf将原始数据绘制成3D曲面。
- 使用mpl_toolkits.mplot3d.Axes3D.set_xlabel、mpl_toolkits.mplot3d.Axes3D.set_ylabel、mpl_toolkits.mplot3d.Axes3D.set_zlabel和mpl_toolkits.mplot3d.Axes3D.set_title将轴标签和标题添加到绘图中。
- 使用numpy.linspace和numpy.meshgrid定义一个新的x-y点网格。
- 使用scipy.interpolate.griddata将原始数据插值到新网格上。
- 使用mpl_toolkits.mplot3d.Axes3D.contourf创建插值数据的二维等高线图。
- 使用matplotlib.pyplot.show显示整个图形。
注意,# fig.colorbar(contour)
行被注释掉了。如果取消注释这行代码,它会向图中添加一个颜色条,显示颜色和z值之间的对应关系。
参考资料
- Matplotlib Official Website: Tutorials — Matplotlib 3.7.0 documentation
- Seaborn Official Website: User guide and tutorial — seaborn 0.12.2 documentation
- Plotly Official Website: https://plotly.com/python/
- DataCamp: https://www.datacamp.com/
- Udacity: Learn the Latest Tech Skills; Advance Your Career | Udacity
- Coursera: https://www.coursera.org/
【python绘图(一)】Python数据分析和可视化相关推荐
- python数据分析并生成报告界面_如何用Python绘图和制作数据分析报告?
Live 简介: 你要向老板汇报自己的工作成果,如果光靠生硬的语言或文字来展示,那么老板很有可能听不懂,更没有兴趣看那一堆文字.这会直接影响你的升职加薪.但是你还要还房贷.买车子.旅游.结婚.生孩子. ...
- python 画风场 scipy_Python数据分析及可视化实例之Scipy
强大到没有朋友的科学计算库,不知道怎么介绍ta! 大牛张若愚出了厚本的<Python 科学计算>第二版 里面包罗万象,就不做搬运工了,尽快开工pandas. 来一弹在NLP自然语言处理中用 ...
- python房价数据挖掘_Python数据分析及可视化实例之帝都房价预测
数据集下载易一网络科技 - 付费文章www.intumu.com 加载数据 import pandas as pd df=pd.read_csv("MYUNOI.csv") # ...
- 程序设计(Python)实验十三 数据分析与可视化(1)
实验目的 1. 熟悉 numpy 库常用方法的使用 2. 熟悉 pandas 库的基本使用 3. 能够利用 matplotlib 库进行简单的图形绘制 实验内容 题目 根据某商品近 5 年的销售流水, ...
- 计算机毕业设计django基于python学生考试成绩数据分析与可视化系统(源码+系统+mysql数据库+Lw文档)
项目介绍 随着社会的逐步发展,计算机网络技术对人们工作.生活影响是全面且深入的.基于计算机网络的管理系统越来越受到人们的欢迎,人们可以通过基于网络的管理系统进行实时数据信息查询.管理数据信息等,给人们 ...
- 计算机毕业设计django基于python学生考试成绩数据分析与可视化系统
项目介绍 随着社会的逐步发展,计算机网络技术对人们工作.生活影响是全面且深入的.基于计算机网络的管理系统越来越受到人们的欢迎,人们可以通过基于网络的管理系统进行实时数据信息查询.管理数据信息等,给人 ...
- Python实用技术二:数据分析和可视化
目录 一,多维数组库numpy 1,操作函数: 2,numpy数组元素增删 1)添加数组元素 2)numpy删除数组元素 3)在numpy数组中查找元素 4)numpy数组的数学运算 3,numpy ...
- python信用卡违约_Python数据分析及可视化实例之银行信用卡违约预测(24)
1.项目背景: 银行体系对于信用可违约进行预测,原始数据集如下: 2.分析步骤: (1)数据清洗(Data Cleaning) (2) 探索性可视化(Exploratory Visualization ...
- 基于python的二手车网站数据分析与可视化
开发工具(eclipse/idea/vscode等):pychram 数据库(sqlite/mysql/sqlserver等):sqlite或者mysql 功能模块(请用文字描述,至少200字): 1 ...
- python绘图实例-Python中turtle绘图学习笔记和实例
一.既然本次讲的主角是turtle函数库,那肯定得先了解一下它是什么 turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位 ...
最新文章
- 80后博导当上双一流高校副校长:还是杰青获得者
- 推荐给Android开发者的抢手书单
- Python 闭包相关之late binding机制
- Spring中Controller和RequestMapping的详解
- STM32中I2C总线上数据的读、写。
- html 多行多列列表格,HTML跨多行跨多列表格.doc
- Java黑皮书课后题第3章:*3.17(游戏:剪刀、石头、布)编写可以玩流行的剪刀-石头-布游戏的程序
- 【CSS实现Loading遮罩】点击按钮,弹出一个DIV层窗口
- 数据交换平台_从零开始理解大数据架构之数据交换平台
- php调用百度天气接口,php使用百度天气接口示例
- Java笔记-解决Required long parameter 'XXX' is not present
- 帮设计师打开思路的网站主页设计案例,给你出灵感
- Python提取Word文档中所有超链接地址和文本
- 1.VBA实现EXCEL中Sheet1的 甲列 相同数值的行对应的乙列的数的和作为Sheet2中丙列中与Sheet1中甲列 相同的行对应的丁列的值...
- 【学习笔记】莫队算法
- java基于springboot教学评价管理系统附源码
- 系统工程新发展——体系
- Excel改变照片底色,设置为白色
- iso 开发学习--简易音乐播放器(基于iPhone4s屏幕尺寸)
- 全球首次互联网8K直播,阿里工程师如何实现?
热门文章
- HUAWEI华为笔记本电脑MateBook 14 2021款i7独显触屏(KLVD-WFE9)原装出厂Windows10系统恢复原厂OEM系统20H2
- 服务器证书 管理器,vault-服务器密码/证书管理工具
- Linux下 ASLR功能与 -no-pie 选项说明
- 抽象类和接口的区别——很深入的一篇文章缀祝昨醉咨阻
- Java包装类(封装类)详解
- 2021--微信小程序流量主开通 (如何赚钱)
- 珠海那个城市!飘着我所有的快乐
- bzoj1710【Usaco2007 Open】Cheappal 廉价回文
- 服装行业视频制作有哪些注意事项?商家开发小程序有哪些优势?
- css绘制箭头写法详解