欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

绘制四维数据散点图

程序员文章站 2022-03-15 15:00:19
原理将自变量x1\ x_1x1​,x2\ x_2x2​和x3\ x_3x3​分别赋给x\ xx,y\ yy和z\ zz轴。因变量以颜色进行表示。这时需要给定因变量数据组以某一颜色映射成色谱值。公式以电化学中的旋转圆盘电极体系下界面浓度分布为例。C0(y)=[C0∗0.8934]∫0Yexp(−u3)du\ C_0(y) = [\dfrac...

原理

  • 将自变量   x 1 \ x_1  x1,   x 2 \ x_2  x2   x 3 \ x_3  x3分别赋给   x \ x  x,   y \ y  y   z \ z  z轴。
    因变量以颜色进行表示。
  • 这时需要给定因变量数据组以某一颜色映射成色谱值。

公式

以电化学中的旋转圆盘电极体系下界面浓度分布为例。

  C 0 ( y ) = [ C 0 ∗ 0.8934 ] ∫ 0 Y e x p ( − u 3 ) d u \ C_0(y) = [\dfrac{C_0^*}{0.8934}]\int_0^Y{exp(-u^3) du}  C0(y)=[0.8934C0]0Yexp(u3)du

  Y = y ( 3 B ) 1 3 = y 3 3 D 0 1 3 ω − 1 2 υ 1 6 \ Y = \dfrac{y}{(3B)^{\frac{1}{3}}} = \dfrac{y}{\sqrt[3]{3}D_0^\frac{1}{3}\omega^{-\frac{1}{2}}\upsilon^{\frac{1}{6}}}  Y=(3B)31y=33 D031ω21υ61y

其中,   D 0 \ D_0  D0,   υ \ \upsilon  υ为常数;
  C 0 ∗ \ C_0^*  C0,   w \ w  w   y \ y  y为变量,画出   C 0 \ C_0  C0   C 0 ∗ \ C_0^*  C0,   C 0 \ C_0  C0   w \ w  w,   C 0 \ C_0  C0   y \ y  y的函数图像。

代码

from scipy.integrate import quad
import math as m
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

D_0 = 5 * m.pow(10, -5)  #常数
v = 1.01 * m.pow(10, -6)

ls_C1 = []  #C0*列表
ls_C0 = []
ls_w = []
ls_y = [] 

for C_1 in np.arange(0.0,100.1, 10):
    for w in range(1, 10001, 1000):
        for y in np.arange(m.pow(10,-5), m.pow(10,-3), 10 * m.pow(10,-5)):
            
            C_1 = float(C_1)
            y = float(y)

            Y = y/(m.pow(3, 1/3) * m.pow(D_0, 1/3) * m.pow(w, -1/2) * m.pow(v, 1/6))  #计算Y
            C_0 = (C_1/0.8934) * quad(lambda u:m.exp(-m.pow(u, 3)),0, Y)[0]  #计算C0
            
            ls_C1.append(C_1)
            ls_w.append(w)
            ls_y.append(y)
            ls_C0.append(C_0)

fig = plt.figure()  #创建一个图
ax = fig.add_subplot(111, projection='3d')

X, Y, Z = np.array(ls_C1), np.array(ls_w), np.array(ls_y)  #给X,Y,Z赋值ndarray数组, 分别为C0*, w, y
C0 = np.array(ls_C0)  #给C0赋值ndarray数组

cm = plt.cm.get_cmap('jet')  #颜色映射,为jet型映射规则
fig = ax.scatter3D(X,Y,Z, c = C0, cmap=cm)

cb = plt.colorbar(fig)  #设置坐标轴
ax.set_xlabel('C0*')
ax.set_ylabel('w')
ax.set_zlabel('y')
cb.ax.tick_params(labelsize=12)
cb.set_label('C0', size = 16)

plt.show()

**需要注意不能将步长设置太短。因为当步长设置太短,图像中数据点过密,外部点会遮盖内部点,无法观察出变化趋势。

运行结果

绘制四维数据散点图

本文地址:https://blog.csdn.net/weixin_40572034/article/details/112623684

相关标签: 可视化