python数据可视化第七节(绘制3D图表和统计地图)

7.1 使用mplot3绘制3D图表

7.1.1 mplot3D概述

mplot3d 是 matplotlib中专门经制 3D图表的工具包,它主要包含一个继承自 Axes 的子类Axes3D,使用 Axes3D 类可以构建一个三维坐标系的绘图区城。matpl otlib 可以通过两和方式创建 Axes3D 类的对象:一种方式是 Axes:3D()方法,另一种方式是add_subplot()方法,具体介绍如下。

1 .Axes3D()方法

Axes3D()是构造方法,它直接用于构建一个Axes3D类的对象,Axes3D()方法的语法格式如下:

Axes 3D (fig,rect-None,*args,azim=-60, elev=30,zscale=None,sharez=None,
proj_type='persp',**kwargs)

2 .add_subplot()方法

在调用add_subplot()方法添加绘图区域时为该方法传入projection=‘3d’,即指定坐标系的类型为三维坐标系,返回一个Axes3D的对象

7.1.2 绘制常见的3D图表

1.绘制3D线框图

Axes3D类的对象使用plot_wireframe()方法绘制框线图,plot_wireframe()方法的语法格式如下所示:

plot_wireframe(self,x,y,z,*args,**kwargs)

案例一:绘制3D线框图
(1)示例代码如下:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 获取测试数据
X, Y, Z = axes3d.get_test_data(0.05)
# 绘制 3D线框图
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
plt.title("2020080603052")
plt.show()

(2)运行代码,如果如下:
在这里插入图片描述

2.绘制3D曲面图

Axes3D类的对象使用plot_surface()方法绘制3D曲面图,该方法的语法格式如下:

plot_surface(self,x,y,z,*args,norm=None,vmin=None,vmax=None,lightsource=None,**kwargs)

案例二:绘制3D曲面图
(1)代码如下:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
x1 = np.arange(-5, 5, 0.25)
y1 = np.arange(-5, 5, 0.25)
x1, y1 = np.meshgrid(x1, y1)
r1 = np.sqrt(x1** 2 + y1 ** 2)
z1 = np.sin(r1)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制曲面图
ax.plot_surface(x1, y1, z1, cmap=cm.coolwarm, linewidth=0, antialiased=False) 
# 设置 z 轴刻度的范围、位置、格式
ax.set_zlim(-1.01, 1.01)
plt.title("2020080603052")
plt.show()

(2)运行代码,结果如下:
在这里插入图片描述
案例三:三维空间的星星
(1)运行代码:

# 01_stars_in_3d
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 生成测试数据
x = np.random.randint(0, 40, 30)
y = np.random.randint(0, 40, 30)
z = np.random.randint(0, 40, 30)
# 创建三维坐标系的绘图区域, 并在该区域中绘制3D散点图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for xx, yy, zz in zip(x, y, z):
    color = 'y'
    if 10 < zz < 20:
        color = '#C71585'
    elif zz >= 20:
        color = '#008B8B'
    ax.scatter(xx, yy, zz, c=color, marker='*', s=160, linewidth=1, edgecolor='black')
ax.set_xlabel('x轴')
ax.set_ylabel('y轴')
ax.set_zlabel('z轴')
ax.set_title('3D散点图 2020080603052', fontproperties='simhei', fontsize=14)
plt.tight_layout()
plt.show()

(2)运行代码,结果如下:
在这里插入图片描述

7.2 使用animation制作动图

相对于静态表而言,添加了动画的动态图表更加生动形象,更能激发用户继续探索数据热情。

7.2.1 animation概述

matplotlib在1.1版本的标准库中加入了动画模块——animation,使用该模块的Animation类可以实现一些基本的动画效果。

1.FuncAnimation类

FuncAnimation是基于函数的动画类,它通过重复调用同一函数来制作动画。FuncAnimation类的构造方法的语法格式如下:

FuncAnimation(fig,func,frames=None,init_func=None,fargs=None,save_count=None,*,cache_frame_data=True,**kwarges)

案例四:实现正弦曲线移动
(1)实现代码:


```python
# 以qt5为图形界面后端
%matplotlib qt5
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation    # 导入动画类
x = np.arange(0, 2 *np.pi, 0.01)
fig, ax = plt.subplots()
line, = ax.plot(x, np.sin(x))
# 定义每帧动画调用的函数 
def animate(i):
    line.set_ydata(np.sin(x + i / 10.0))
    return line
# 定义初始化帧的函数
def init():
    line.set_ydata(np.sin(x))
    return line
ani = FuncAnimation(fig=fig, func=animate, frames=100, 
                    init_func=init, interval=20, blit=False)
plt.title("2020080603052")
plt.show()

(2)运行代码,结果如下:
在这里插入图片描述

2. ArtisAnimation类

ArtisAnimation是基于一组Artist对象的动画类,它通过一帧一帧的数据制作动画。 ArtisAnimation类的构造方法的语法格式如下:

ArtisAnimation(fig,artists,interval,repeat_delay,repeat,blit,*args,**kwargs)

案例五:移动的正弦曲线:
(1)运行代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation
x = np.arange(0, 2 * np.pi, 0.01)
fig, ax = plt.subplots()
arr = []
for i in range(5):
    line = ax.plot(x, np.sin(x + i))
    arr.append(line)
# 根据arr存储的一组图形创建动画
ani = ArtistAnimation(fig=fig, artists=arr, repeat=True)
plt.title("2020080603052")
plt.show()

(2)运行代码,实现结果:
在这里插入图片描述
案例六:三维空间闪烁的星星
(1)运行代码:

# 02_twinkling_stars_in_3d
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 生成测试数据
xx = np.array([13, 5, 25, 13, 9, 19, 3, 39, 13, 27])
yy = np.array([4, 38, 16, 26, 7, 19, 28, 10, 17, 18])
zz = np.array([7, 19, 6, 12, 25, 19, 23, 25, 10, 15])
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制初始的3D散点图
star = ax.scatter(xx, yy, zz, c='#C71585', marker='*', s=160, 
      linewidth=1, edgecolor='black')
# 每帧动画调用的函数
def animate(i):
    if i % 2:
        color = '#C71585'
    else:
        color = 'white'
    next_star = ax.scatter(xx, yy, zz, c=color, marker='*', s = 160, linewidth=1, edgecolor='black')
    return next_star
def init():
    return star
ani = FuncAnimation(fig=fig, func=animate, frames=None, init_func =init, interval=1000, blit=False)
ax.set_xlabel('x轴')
ax.set_ylabel('y轴')
ax.set_zlabel('z轴')
ax.set_title('3D散点图,2020080603052', fontproperties='simhei', fontsize=14)
plt.tight_layout()
plt.show()

(2)运行代码,结果如下:
在这里插入图片描述

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python数据可视化是一种强大的工具,可以帮助我们更好地理解和分析数据。本指南将介绍如何使用Python绘制专业图表,包括线图、散点图、柱状图、饼图、热力图等。我们将使用Python的常用数据可视化库,如Matplotlib、Seaborn和Plotly等。通过本指南,您将学习如何选择合适的图表类型、调整图表样式、添加标签和注释等技巧,以及如何将图表嵌入到网页或报告中。无论您是数据分析师、科学家、工程师还是学生,本指南都将为您提供有用的技能和知识,帮助您更好地展示和传达数据。 ### 回答2: Python是一个功能强大且灵活的编程语言,可以用于数据处理和可视化。由于其易用性和广泛的社区支持,Python成为了数据科学家、研究人员和工程师最喜欢的编程语言之一。Python提供了一些非常强大的库,如Matplotlib,Seaborn等,可以绘制几乎所有类型的图表Python数据可视化之美:专业图表绘制指南是一本教授如何使用Python绘制各种图表的书籍。它旨在帮助初学者和专业人士创建专业的图形,以便更好地理解和传达数据。以下是本书的一些要点。 首先,本书介绍了数据可视化的原则和最佳实践。在这里,作者讨论了数据可视化的目的和优点,以及如何选择最佳的可视化工具。 其次,本书提供了一些基本的绘图技巧,如创建柱形图、线形图、散点图和饼图等。此外,还介绍了如何添加标签、颜色和其他元素,以使图表更具吸引力和专业性。 然后,本书介绍了一些高级绘图技巧,如处理时间序列数据、创建多个子图和使用Seaborn绘图库。这些技术有助于创建更复杂和专业的图表。 最后,本书提供了许多实用的例子来概述如何应用这些技术来解决真实的数据科学问题。这些例子包括如何分析数据并识别趋势、如何可视化预测结果,以及如何使用地理信息系统(GIS)数据。 总的来说,Python数据可视化之美:专业图表绘制指南是一本非常实用、丰富和易于理解的书籍。无论您是学生、研究人员、工程师还是任何想要使用Python进行数据可视化的人,都可以从本书中受益。它提供了广泛的教程和实例,使您可以轻松创建各种类型的图表,同时增强您对数据的理解。 ### 回答3: 数据可视化是数据分析和处理工作流程中非常重要的一部分。由于很多数据分析工程师使用Python进行分析,因此掌握Python数据可视化技术非常有必要。Python数据可视化之美:专业图表绘制指南提供了广泛的数据可视化技术,帮助用户将数据转换为易于读取的图形。 Python数据可视化之美:专业图表绘制指南提供了许多常见图表绘制方法,包括散点图、折线图、柱状图、饼图、分布图等等。这些方法被精细地整合在几个包中,例如Matplotlib、Seaborn等等。例如,Seaborn可以轻松制作双变量的比较图,使得预测模型的评估更容易,而Matplotlib则可以定制更多的视觉效果,创造更精美的图表Python数据可视化之美:专业图表绘制指南不仅提供了单一的图表绘制方法,而且介绍了如何绘制多个图表并将其组合在一起。例如,可以将散点图和折线图组合在一起来展示两个变量之间的关系,并可以在同一张图表上显示多个系列。这些技术使得制作复杂的图表变得非常容易,并且可以将多个图表组合在一起分享。 Python数据可视化之美:专业图表绘制指南的优点不仅在于提供了普通数据分析工程师经常使用的图表绘制方法,还在于包括一些复杂的方法,例如制作3D图、热图、动态图和交互式图表。这些复杂的图表非常适合高级数据分析操作和数据科学项目,可以帮助用户更好地理解数据。 总之, Python数据可视化之美:专业图表绘制指南是给人们在数据分析工程师领域内提供好用和强大工具的一本书。它提供了许多有用的技术和工具,使得数据可视化过程变得更加简单、容易。这个书的内容可以为那些使用Python进行大规模数据库处理的数据分析工程师提供非常有价值的帮助,而它也适合那些处于数据科学学习阶段的初学者。无论是工程师还是初学者,Python数据可视化之美:专业图表绘制指南都是非常有益的一本书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值