一、使用mplot3d绘制3D图表

1.1、mplot3d概述
matplotlib不仅专注于二维图表的绘制,也具有绘制3D图表、统计地图的功能,并将这些功能分别封装到工具包mpl_toolkits.mplot3d。mpl_toolkits.basemap中,另外还可以结合animation模块给图表添加动画效果。
matplt otlib 可以两种方式可以创建Axes3D类的对象。
通过以下:

第一种: Axes3D()方法。
第二种: add_subplot()方法。

1.2、绘制常见的3D图表
常见的3D图表包括3D线框图、3D曲面图、3D柱形图、3D散点图等。

Axes3D类的常见绘图方法及其说明

1、绘制3D线框图
Axes3D类的对象使用plot_wireframe()方法绘制线框图,语法格式如下.

plot_wireframe(self,X,Y,Z,*args,**kwargs

该方法的常用语法是:

  • X,Y,Z:表示x、y、z轴的数据。
  • rcount,ccount:表示每个轴方向上使用的最大样本量,默认为50。若输入的样本量更大,则会采用降采样的方式减少样本的数量;若输入的样本量为0,则不会对相应轴方向的数据进行采样。
  • rstride,cstride:表示采样的密度。若仅使用参数rstride或cstride中任意一个,则另一个参数默认为0。

绘制3D线框图的示例代码如下:

import matplotlib.pyplot as plot
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)
ax.plot_wireframe(X,Y,Z,rstride=10,cstride=10)
plt.title('39')
plt.show()

代码运行结果如下:

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

plot_surface(self, X,Y,Z,*args, norm=None.vmin=None. vmax=None语法
lightsource=None,**kwargs)

该方法常用的参数含义如下:

  • X,Y,Z:表示x、y、z轴的数据。
  • rcount,ccount:表示每个坐标轴方向上使用的最大样本量,默认为50。
  • rstride,cstride:表示采样的密度。color:表示曲面的颜色。
  • cmap:表示曲面的颜色映射表。
  • shade:表示是否对曲面进行着色。

绘制3D曲面图的示例代码如下:

import matplotlib.pyplot as plot
from mpl_toolkits.mplot3d import axes3d
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)
ax.set_zlim(-1.01,1.01)
plt.title('39')
plt.show()

代码运行结果如下:

实例,三维空间的星星
代码如下:

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)
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='y')
ax.set_xlabel('x轴 39')
ax.set_ylabel('y轴 39')
ax.set_zlabel('z轴 39')
ax.set_title('3D散点图 39',fontproperties='simhei',fontsize=14)
plt.tight_layout()
plt.show()

代码运行结果如下:

二、使用 animation制作动图

与静态图表相比,添加了动画效果的动态图表更加生动形象,更能激发用户继续探索数据的热情。
2.1、animation概述
1.FuncAnimation类
FuncAnimation是基于函数的动画类,它通过重复地调用同一函数来制作动画,该构造方法的语法格式如下:

FuncAnimation(fig, func, frames=None. init func=None. fargs=Non,save_count=None,*, cache_frame_data=True,**kwargs)

该方法的语法格式如下:

  • fig:表示动画所在的画布。func:表示每帧动画调用的函数。
  • frames:表示动画的长度(一次动画包含的帧数)。
  • init_func:表示用于开始绘制帧的函数,它会在第一帧动画之前调用次。
  • interval:表示更新动画的频率,以毫秒为单位,默认为200。
  • blit:表示是否更新新的所有的点,默认为False。

例如,代码如下:

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('39')
plt.show()

运行结果如下:
这结果为一个动图需要加上%matplotlib qt5 才会显示其动图模式,下列图都是如此,下面就不在说明

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

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

该方法常用参数如下:

  • fig:表示动画所在的画布。
  • artists:表示一组Artist 对象的列表。
  • interval:表示更新动画的频率,以毫秒为单位,默认为200。
  • repeat_delay:表示再次播放动画之前延迟的时长。repeat:表示是否重复播放动画。
  • repeat:表示是否重复播放动画。

移动的正弦曲线

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)
ani=ArtistAnimation(fig=fig,artists=arr,repeat=True)
plt.title('39')
plt.show()

运行结果如下:

实例:

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,18,3,39,13,27])
yy=np.array([4,38,16,26,7,19,23,25,10,15])
zz=np.array([7,19,6,12,25,19,23,25,10,15])
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d')
star=ax.scatter(xx,yy,zz,c='y',marker='*',s=160)
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,edgcolor='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散点图 39',fontproperties='simhei',fontsize=14)
plt.tight_layout()
plt.show()

运行结果如下:

三、使用Iasemap绘制统计地图

3.1、 basemap概述
在数据可视化中,人们有时需将采集的数据按照其地理位置显示到地图上,常见于城市人口、飞机航线、矿藏分布等场景,有助于用户理解与空间有关的信息。basemap是matplotlib中的地图工具包,它本身不会参与任何绘图操作,而是会将给定的地理坐标转换到地图投影上,之后将数据交给matplotlib进行绘图。
1.安装basemap
接在Anaconda Prompt工具中输入如下命令︰

conda install basemap

执行以上命令后,conda命令会自动解析当前的Python环境并下载当前环境对应的basemap包。需要说明的是,在命令执行的过程中会询问用户是否安装,用户只需同意即可。
安装完成后,在命令提示符后面输入python,之后输入如下导入语句∶

from mpl_toolkits.basemap import Basemap

执行完以上语句后,若Anaconda Prompt中没有出现错误信息,则表明basemap安装成功,否则表明安装失败。

2、使用basemap
basemap工具包中主要包含一个表示基础地图背景的Basemap类,通过创建Basemap类的对象可以指定地图投影的类型和要处理的地球区域,语法格式如下:

Basemap(1lcrnrlon=None, l1crnrlat=None, urcrnrlon=None, urcrnrlat=None,l1crnrx=None, ......)

实例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
map=Basemap(projection='stere',lat_0=90,lon_0=-105,llcrnrlat=23.41,urcrnrlat=45.44,llcrnrlon=-118.67,urcrnrlon=-64.52,rsphere=6371200.,resolution='1',area_thresh=10000)
map.drawmapboundary()
map.drawstates()
map.drawcoastlines()
map.drawcountries()
parallels=np.arange(0.,90,10.)
map.drawparallels(parallels,label=[1,0,0,0],fontsize=10)
meridians=np.arange(-110.,-60.,10.)
map.drawmeridians(meridians,label=[0,0,0,1],fontsize=10)
posi=pd.read_jpg(r"C:\Users\仅存\Desktop\QQ图片20220315184244.jpg")
lat=np.array(posi["lat"][0:500])
lon=np.array(posi["lon"][0:500])
pop=np.array(posi["pop"][0:500],dtype=float)
size=(pop/np.max(pop))*1000
x,y=map(lon,lat)
map.scatter(x,y,s=size)
plt.title('人口分布情况  39')
plt.show()

运行结果如下:

数据可视化——绘制3D图表和绘制地图相关推荐

  1. python大数据可视化坐标轴的定制与绘制3D图表及统计地图

    一.坐标轴的定制 1.概述: 坐标轴及其组成部分对应着matplotlib中一些类的对象︰坐标轴是axis.Axis类的对象,x轴是axis.Xaxis类的对象,y轴是axis.Yaxis类的对象;轴 ...

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

    7.1 使用mplot3绘制3D图表 7.1.1 mplot3D概述 mplot3d 是 matplotlib中专门经制 3D图表的工具包,它主要包含一个继承自 Axes 的子类Axes3D,使用 A ...

  3. 大数据可视化坐标轴的定制与绘制3D图表及统计地图

    一.坐标轴的定制 1.概述: 坐标轴及其组成部分对应着matplotlib中一些类的对象︰坐标轴是axis.Axis类的对象,x轴是axis.Xaxis类的对象,y轴是axis.Yaxis类的对象;轴 ...

  4. python绘制3D图表

    pyecharts绘制3D图表 参数配置和说明 Grid3DOpts.Axis3DOpts为3D图标需要配置项 Grid3DOpts:三位坐标系配置项 class pyecharts.options. ...

  5. 数据可视化——R语言ggplot2包绘制相关矩阵为热图

    数据可视化--R语言ggplot2包绘制相关矩阵为热图 概述:R语言软件和数据可视化--ggplot2快速绘制相关矩阵为热图.本文翻译了一篇英文博客,博客原文链接:http://www.sthda.c ...

  6. 数据可视化——R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合)

    数据可视化--R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合) 概述:R语言使用ggplot2工具包绘制小提琴图.为了使数据表达更加丰富,同时将小提琴图与箱线图和误差条图相结合.另外 ...

  7. 第七章、绘制3D图表和统计地图

    7.1.使用mtplot3d绘制3D图表 7.1.1.mplot3d概述 mplot3d是matplotlib中专门绘制3D图表的工具包,它主要包含一个继承自Axes的子类Axes3D,使用Axes3 ...

  8. 第七章 绘制3D图表和统计地图

    第七章 绘制3D图表和统计地图 这节课主要学习了如何使用mplot3d工具包绘制3D图表,然后介绍了使用anima tion模块制作动画,最后学习了使用basemap工具包绘制统计地图等. 接下来是课 ...

  9. 【Python】利用Python绘制3D图表

    代码 ''' Author: CloudSir Date: 2021-07-28 10:57:47 LastEditTime: 2021-08-04 17:33:07 LastEditors: Clo ...

最新文章

  1. pandas.read_csv()跳过读取文件报错行
  2. wp7——sqlite数据库操作 from:http://blog.csdn.net/wp_lijin/article/details/7370790
  3. springboot 接口返回数据时 net.sf.json.JSONNull[“empty“]) 异常
  4. javascript中三个等号的意思
  5. Linux常用命令英文全称与中文解释Linux系统
  6. python:关于py文件之间相互import的问题
  7. 基于Python的特征自动化选择:两行代码完成特征工程
  8. JQuery-让Ajax变的更简单
  9. 中国移动2016年NAT独立设备集采:迪普科技连续三年入围
  10. Spark GraphX算法 - Pregel算法
  11. “智慧感控”理念革新医疗管理
  12. WiredTiger存储引擎知多少?
  13. 进入路由器boot的方式
  14. VHD容量调整的方法(保存原有vhd)
  15. Navicat 常用快捷键
  16. varnish运行机制及管理优化
  17. android 自定义tabhost,安卓选项卡的实现方法(TabActivity),自定义TabHost容器
  18. lg2用计算机怎么算,lg计算器(log计算器在线)
  19. 计算机软考深圳积分,2020年软考证书能为深圳积分入户加分吗?
  20. Cloudera Manager server服务器系统损坏后恢复

热门文章

  1. 十字路口通行优先权,十字路口通行规则图解
  2. android 获取SD、ROM容量
  3. 给自家人做个招聘广告,前后端和移动工程师看过来
  4. 找玩具 概率 dfs
  5. 14期《读万卷书,行万里路》4月刊
  6. F5 LTM 常用oid列表
  7. React 全屏监听Esc键
  8. Android实战——RecyclerView条目曝光埋点
  9. 手游代理平台官方最全解释
  10. AtCoder Beginner Contest 208