Matplotlib可视化②——3D绘制散点图&曲面图&折线图&等高线图

数据可视化系列汇总:
Matplotlib可视化①——二维图表绘制(折线图&直方图&散点图&条形图&箱形图)
Seaborn做图系列①——直方图&箱型图&散点图&回归图&热力图&条形图
Excel数据分析高级技巧①——动态图表制作(offset,vlookup,控件…)
Excel高级图表制作①——电池图/KPI完成情况对比图/重合柱形图
Excel高级图表制作②——帕累托图
Excel高级图表制作③——漏斗图/转化路径图

一、3D折线图

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import random
import matplotlib as mpl
from matplotlib import cm
from mpl_toolkits.mplot3d import axes3d
from mpl_toolkits.mplot3d.art3d import Poly3DCollection,Line3DCollection

x = np.linspace(1,20,20)
y = np.arange(10,30,1)
z = np.random.randint(20,50,20)  # numpy分别生成三个维度数据
fig = plt.figure()
ax = Axes3D(fig)  # 创建3D图的2种方式,第一种通过Axes3D将图片从二维变成三维,第二种通过在add_subplot(111,projection='3d')将子图坐标修改成三维
ax.plot(x,y,z,'bo--')  # 参数与二维折现图不同的在于多了一个Z轴的数据
plt.show()

Matplotlib可视化②——3D绘制散点图&曲面图&折线图&等高线图_第1张图片

二、3D曲面图

data = np.random.randint(100,500,(3,10,20))
x,y,z = data[0],data[1],data[2]  # numpy同时生成三维数据
fig = plt.figure()
ax1 = fig.add_subplot(121,projection='3d')
ax1.plot_surface(x,y,z,cmap=plt.cm.winter,rstride=1,cstride=1) # rstride和cstride是隔几行几列取一个数字,代表曲面的稀疏度
ax2 = fig.add_subplot(122,projection='3d')
ax2.plot_surface(x,y,z,cmap=plt.cm.winter,rstride=10,cstride=10)
plt.show()

Matplotlib可视化②——3D绘制散点图&曲面图&折线图&等高线图_第2张图片

三、3D散点图

x= np.linspace(5,20,20)
y = np.linspace(20,100,20)
x1,y1 = np.meshgrid(x,y)
z = np.sin(x1)*y1+np.sin(y1)*x1  # 函数构造数据
fig = plt.figure()
ax1 = fig.add_subplot(121,projection='3d')
ax1.scatter(x1,y1,z,c='y',marker='D')
ax2 = fig.add_subplot(122,projection='3d')
ax2.scatter(x1[:10],y1[:10],z[:10],cmap=plt.cm.winter,marker='o')
ax2.scatter(x1[10:],y1[10:],z[10:],cmap=plt.cm.spring,marker='*')
plt.show()

Matplotlib可视化②——3D绘制散点图&曲面图&折线图&等高线图_第3张图片
四、等高线图

x = np.arange(-10,10,0.01)  #生成步长为0.01的数据
y = np.arange(-10,10,0.01)
x,y=np.meshgrid(x,y)
def func(x,y):
    return x**2+y**2
fig,axes = plt.subplots(2,2)
axes[0,0].contour(x,y,func(x,y),20,cmap=plt.cm.winter,alpha=0.8) # 不填充,只是线20是指分成20等份,分太多会看不清
axes[0,1].contourf(x,y,func(x,y),20,cmap=plt.cm.hot)  # 填充
c = axes[1,0].contour(x,y,func(x,y),[8,20],c='k')  # [8,20]是只想看这两条线
plt.clabel(c,inline=True,fontsize=10,fmt='%.f',colors=['k','y']) # 设置数据标签格式,inline是在线上
d = axes[1,1].contourf(x,y,func(x,y),10,cmap=plt.cm.hot)
plt.clabel(d,inline=True,fontsizq=10,fmt='%.f')
plt.colorbar(d) # 显示数据条
plt.xticks(())
plt.yticks(()) # 去除坐标轴
plt.show()

Matplotlib可视化②——3D绘制散点图&曲面图&折线图&等高线图_第4张图片
本人从事数据分析师的工作,除了目前已出的Excel,SQL,Pandas,Matplotlib,Seaborn,机器学习系列以外,后续还会出数据挖掘,统计学以及工作经验系列,感兴趣的小伙伴可关注下我喔

你可能感兴趣的:(Matplotlib)