数据分布图-python 高斯分布三维等高线图像

创作不易,转载请注明出处

论文的画图的时候,发现别人的图很好看。大概长这样。折腾了半天发现可以用高斯分布模拟。
在这里插入图片描述

  1. 可以设置rv1,rv2,rv3来控制生成的峰的个数。
  2. 然后根据调整rv的mu和var来控制生成图像的形状。
  3. rvs=rv+rv1+rv2+rv3+…来合成波峰图
  4. np.clip来控制取值范围。
  5. 关闭x,y轴标签。
import matplotlib.pyplot as plt
from matplotlib import style
style.use('fivethirtyeight')
import numpy as np
from scipy.stats import multivariate_normal




#Parameters to set

shape=50 #采样间隔
x = np.linspace(-2,6,shape) #采样区间
y = np.linspace(-2,6,shape)
X,Y = np.meshgrid(x,y)

pos = np.array([X.flatten(),Y.flatten()]).T

# 波峰生成

rv = multivariate_normal([0, 0], [[2, 0], [0, 1]])

rv1 = multivariate_normal([1, 4], [[1, 0], [0, 2]])

rv2 = multivariate_normal([4, 1], [[1, 0], [0, 2]])

#图片外的波峰,可以填充边角的空白

rv3 = multivariate_normal([7, 8], [[5, 0], [0, 5]])


rv4 = multivariate_normal([8, 0], [[5, 0], [0, 5]])

# 波峰合成

rvs=rv.pdf(pos).reshape(shape,shape)+rv1.pdf(pos).reshape(shape,shape)+rv2.pdf(pos).reshape(shape,shape)+rv3.pdf(pos).reshape(shape,shape)*4+rv4.pdf(pos).reshape(shape,shape)*1

rvs=np.clip(rvs,0.01,0.16)
plt.contourf(X, Y,rvs ,8,cmap='Reds')
# plt.contourf(X, Y, ,cmap='Reds')

plt.xticks([])
plt.yticks([])
plt.axis('off')

# plt.colorbar()

plt.savefig("test2.png",bbox_inches='tight',pad_inches=0.0)

在这里插入图片描述
在这里插入图片描述
联系方式:santa.cs@qq.com

创作不易,转载请注明出处

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值