如何在3D Matplotlib中模糊数据点

3

是否有可能在matplotlib 3d中根据离视点的距离模糊一些数据点?我知道现在它只会使点不透明。

我正在寻找类似于这样的东西;

http://vimeo.com/15669684

1个回答

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)

需要哪个版本的matplotlib?因为在本地运行mpl版本1.1.1rc(ubuntu 12.04)时,似乎只改变了点的不透明度。 - happy_hivemind
他们还应该随机地抖动一下...我正在使用matplotlib 1.3.0... - Saullo G. P. Castro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接