Python和科学计算认证群组  - 讨论区

标题:如何能快速绘图

2012年05月19日 星期六 23:38

x:一维数据

y:一维数据

(x,y)代表一系列坐标点,我想把这些点 以及 每个点对应的值用不同的颜色表示出来,而且最终显示结果类似于imshow而不是scatter

网上找了一下,这里提的问题跟我想实现的很类似: http://stackoverflow.com/questions/7988473/matplotlib-how-can-i-convert-a-xyz-scatter-to-a-pixel-image

但是他们用的contourf的方式有一个很大的缺点是绘图速度极慢。有人提到imshow的方式很快: http://stackoverflow.com/questions/6318170/large-matplotlib-pixel-figure-best-approach

但是imshow好像不能实现我想画的极坐标图(一楼)

该怎么画?恳请手不吝赐教 (我用的是spyder)

2012年05月19日 星期六 23:41

这是我参照第一个网址用contourf画的,但是角度取值和半径取值很大,绘图效率较低。

 

2012年05月19日 星期六 23:49

不好意思,楼上说法不恰当,"角度取值和半径取值很大"---->取值的点数很大

2012年05月20日 星期日 18:10

经过一些尝试,我找到了pcolormesh这个函数,它的绘图速度很快,唯一不足就是色彩的渲染不如imshow,

 

怎么看不到3楼了?

2012年05月20日 星期日 19:50

嗯,应该使用pcolormesh, 下面是一个例子:

http://hyry.dip.jp/tech/forum/thread.html/153

import numpy as np
import pylab as pl

def func(theta, r):
    y = theta * np.sin(r)
    return np.sqrt(y*y)

T, R = np.mgrid[0:2*np.pi:360j, 0:10:100j]
Z = func(T, R)

ax=pl.subplot(111, projection="polar", aspect=1.)
ax.pcolormesh(T, R, Z)
pl.show()

2012年05月22日 星期二 08:56

pcolormesh 对值为 nan 的数据并不显示为白色!!

请问有什么解决方法?

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号