【python学习】-多张三维图共用一个colorbar(matplotlib绘制)

多张三维图共用一个colorbar

一张三维图

绘制一张三维图,大概步骤是:导入相关库;生成三维图框,对X,Y数据进行统一网格化,绘制图形,添加colorbar,设置图形其他参数(如坐标轴,刻度范围,图形像素及大小),显示图形。

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm
import matplotlib
import numpy as np
import math
#下面这里是我的图形的X,Y,Z数据,可以根据自己的数据进行修改
LL_C = np.load('data_It_C_xi_E=0.8.npz')
LL_C = LL_C['arr_0']
C_L=LL_C[0]    
C_L_one0=np.array(C_L[0])#注意C是二维数组
dt=5E-4
dx=1E-7
D_CO=1E-11
tmax=50
L=math.sqrt(2*D_CO*tmax)
X = np.arange(0,(100001)*dt,dt)
Y=np.arange(0,(316.5)*dx/L,dx/L)
#建立三维画板
ax = plt.figure().add_subplot(projection='3d')
#将x,y数据进行网格化
X, Y = np.meshgrid(X, Y)
# Plot the 3D surface
fig1=ax.plot_surface(X, Y, C_L_one0,cmap="rainbow")
#绘制colorbar
plt.colorbar(fig1, fraction=0.1, pad=0.15, shrink=0.9, anchor=(0.0, 0.3))
#图形其他设置
#使图片背景为白色
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
#调整角度,设置各轴范围
ax.view_init(25, -70)
ax.set_zlim(0,1)
ax.set_xlim(0,50)
ax.set_ylim(0,1)
#设置各轴坐标
font3 = {'family' : 'Arial',
    'weight' : 'normal',
    'size'   : 14,
    }
ax.set_xlabel('$\t{t}$(s)',font3)
ax.set_ylabel('$\t{x/L}$',font3)
ax.set_zlabel('$\t{C}$(mol m$^{-3}$)',font3)
#设置图片像素大小
plt.rcParams['figure.figsize']=(6.0,4.0)
plt.rcParams['savefig.dpi'] = 200 #图片像素
plt.rcParams['figure.dpi'] = 200 #分辨率
#图形显示
plt.show()

在这里插入图片描述

多张三维图

#多张三维图共用一个colorbar
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm
import matplotlib
import numpy as np
import math
#下面这里是我的图形的X,Y,Z数据,可以根据自己的数据进行修改
LL_C = np.load('data_It_C_xi_E=0.8.npz')
LL_C = LL_C['arr_0']
C_L=LL_C[0] 
dt=5E-4
dx=1E-7
D_CO=1E-11
tmax=50
L=math.sqrt(2*D_CO*tmax)
X = np.arange(0,(100001)*dt,dt)
Y=np.arange(0,(316.5)*dx/L,dx/L)
#在一幅三维图形上显示多组数据
C_L_one0=np.array(C_L[0])#注意C是二维数组
C_L_one1=np.array(C_L[3])
C_L_one2=np.array(C_L[4])
#建立三维画板
ax = plt.figure().add_subplot(projection='3d')
#将x,y数据进行网格化
X, Y = np.meshgrid(X, Y)
#将颜色映射到 vmin~vmax 之间
norm = matplotlib.colors.Normalize(vmin=0, vmax=1)
# Plot the 3D surface
fig1=ax.plot_surface(X, Y, C_L_one0,cmap="rainbow",norm = norm)
fig2=ax.plot_surface(X, Y, C_L_one1,cmap="rainbow",norm = norm)
fig3=ax.plot_surface(X, Y, C_L_one2,cmap="rainbow",norm = norm)
#绘制colorbar。因为已对颜色的映射范围进行设置,这里选择只显示其中一张图的colorbar
plt.colorbar(fig3, fraction=0.1, pad=0.15, shrink=0.9, anchor=(0.0, 0.3))
#图形其他设置
#使图片背景为白色
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
#调整角度,设置各轴范围
ax.view_init(25, -70)
ax.set_zlim(0,1)
ax.set_xlim(0,50)
ax.set_ylim(0,1)
#设置各轴坐标
#font3 = {'family' : 'Arial',
#    'weight' : 'normal',
#    'size'   : 14,
#    }
#ax.set_xlabel('$\t{t}$(s)',font3)
#ax.set_ylabel('$\t{x/L}$',font3)
#ax.set_zlabel('$\t{C}$(mol m$^{-3}$)',font3)
#设置图片像素大小
plt.rcParams['figure.figsize']=(6.0,4.0)
plt.rcParams['savefig.dpi'] = 200 #图片像素
plt.rcParams['figure.dpi'] = 200 #分辨率
plt.show()

在这里插入图片描述

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

electrochemjy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值