python数据可视化--使用matplotlib绘制二元高斯分布的3D图像

均值为(0,0),变量之间相互独立时,根据官网给出的教程

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D

X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.exp((-0.5)*((X*X)+(Y*Y)))
Z = R

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.5, cmap=cm.coolwarm)

plt.show()

如图:
在这里插入图片描述

当均值为(0,0),变量之间不是相互独立时:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d 
from matplotlib import cm
import matplotlib as mpl
import math
num = 200
l = np.linspace(-5,5,num)
X,Y = np.meshgrid(l,l)

u = np.array([0,0])                                                       #均值
o = np.array([[1,0.5],[0.5,1]])                                           #协方差矩阵

pos = np.concatenate((np.expand_dims(X,axis=2),np.expand_dims(Y,axis=2)),axis=2)  #定义坐标点

a = np.dot((pos-u),np.linalg.inv(o))  #o的逆矩阵
b = np.expand_dims(pos-u,axis=3)
# Z = np.dot(a.reshape(200*200,2),(pos-u).reshape(200*200,2).T)
Z = np.zeros((num,num),dtype=np.float32)                
for i in range(num):
    Z[i] = [np.dot(a[i,j],b[i,j]) for j in range(num)]                         #计算指数部分

Z = np.exp(Z*(-0.5))/(2*np.pi*math.sqrt(np.linalg.det(o)))

fig = plt.figure()                                                              #绘制图像
ax = fig.add_subplot(111,projection='3d')
ax.plot_surface(X,Y,Z,rstride=2,cstride=2,alpha=0.6,cmap=cm.coolwarm)

cset = ax.contour(X,Y,Z,10,zdir='z',offset=0,cmap=cm.coolwarm)                     #绘制xy面投影
cset = ax.contour(X,Y,Z,zdir = 'x',offset=-4,cmap = mpl.cm.winter)                 #绘制zy面投影
cset = ax.contour(X,Y,Z,zdir = 'y',offset= 4,cmap =mpl.cm.winter)                  #绘制zx面投影

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

plt.show()

结果如下:
在这里插入图片描述

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是基于 Python 的气象数据分析 --以广西桂林为例利用 Matplotlib 绘制图像进行可视化分析的研究方法。 1. 数据获取和处理 首先需要获取气象数据,并进行处理。这里以广西桂林市的气象数据为例,使用 Pandas 库进行数据处理。 ```python import pandas as pd # 读取数据 data = pd.read_csv('Guilin_weather.csv') # 处理日期格式 data['日期'] = pd.to_datetime(data['日期'], format='%Y-%m-%d') # 设置日期为索引 data.set_index('日期', inplace=True) # 删除不需要的列 data.drop(['区站号', '纬度', '经度', '海拔高度'], axis=1, inplace=True) # 替换空值 data.fillna(method='ffill', inplace=True) ``` 2. 数据分析可视化 接下来就可以进行数据分析可视化了。使用 Matplotlib绘制各种类型的图像,如线图、散点图、柱状图等等,以展示数据分布和趋势。 ```python import matplotlib.pyplot as plt # 绘制气温曲线 plt.plot(data['平均气温'], label='Average Temperature') plt.plot(data['最高气温'], label='Highest Temperature') plt.plot(data['最低气温'], label='Lowest Temperature') # 添加标题和标签 plt.title('Temperature Variation in Guilin') plt.xlabel('Date') plt.ylabel('Temperature (℃)') # 添加图例 plt.legend() # 显示图像 plt.show() ``` ```python # 绘制降水量散点图 plt.scatter(data.index, data['降水量'], label='Precipitation') # 添加标题和标签 plt.title('Precipitation in Guilin') plt.xlabel('Date') plt.ylabel('Precipitation (mm)') # 显示图像 plt.show() ``` ```python # 绘制风向和风速柱状图 fig, ax1 = plt.subplots() # 绘制风向柱状图 ax1.bar(data.index, data['日平均风向'], label='Wind Direction') # 添加标签 ax1.set_ylabel('Wind Direction (°)') # 创建第二个坐标轴 ax2 = ax1.twinx() # 绘制风速柱状图 ax2.bar(data.index, data['日平均风速'], alpha=0.5, label='Wind Speed') # 添加标签 ax2.set_ylabel('Wind Speed (m/s)') # 添加标题 plt.title('Wind Direction and Speed in Guilin') # 添加图例 ax1.legend(loc='upper left') ax2.legend(loc='upper right') # 显示图像 plt.show() ``` 通过这些分析和可视化方法,我们可以更好地理解气象数据,发现数据中的趋势和规律,为气象预测和应对气候变化提供参考。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值