如何在3d matplotlib中模糊点

时间:2013-08-22 21:44:23

标签: python animation matplotlib plot blurry

是否可以在matplotlib 3d中模糊一些数据点,具体取决于它从视点的长度。我知道它只是不透明点。

我正在寻找类似的东西;

http://vimeo.com/15669684

1 个答案:

答案 0 :(得分:0)

您可以使用matplotlib.cm中的一个色彩图进行模糊。

在下面的玩具示例中,对z坐标进行了线性插值,该坐标定义了每个标记的颜色。告诉前景和背景z值的限制由zbfzbb提供。

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import matplotlib.cm as cm
import numpy as np

n = 10
frames = 100
x = np.random.random(n)
y = np.random.random(n)
z = np.random.random(n)

zbb = 0. # z_blur_back
zbf = 1. # z_blur_fore

ax = plt.subplot(111)
fig = plt.gcf()

def animate(i):
    global x, y, z
    x += 0.01*(-0.5 + np.random.random(n))
    y += 0.01*(-0.5 + np.random.random(n))
    z += 0.05*(-0.5 + np.random.random(n))

    cmnum = (z-zbf)/(zbb-zbf)
    colors = cm.gray(cmnum) # use hot, ocean, rainbow etc...

    fig = plt.gcf()
    fig.clear()
    ax = plt.gca()
    ax.scatter(x, y, marker='o', s=200., color=colors)
    ax.set_xlim(-0.1,1.1)
    ax.set_ylim(-0.1,1.1)

ani = FuncAnimation(fig, animate, frames=xrange(frames))
ani.save('test.mp4', fps=20)