Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pylab 3d轴测井刻度问题_Python_Matplotlib_3d - Fatal编程技术网

Python pylab 3d轴测井刻度问题

Python pylab 3d轴测井刻度问题,python,matplotlib,3d,Python,Matplotlib,3d,所以我用matplotlib创建了一个3d绘图。基本代码段如下所示: xScl, zScl = 'linear', 'linear' data1, data2 = map(np.array, [data1, data2]) # Figure out the right scaling for different sets of data if np.abs(data1).max() > 1000: if data1.min() <= 0: data1

所以我用matplotlib创建了一个3d绘图。基本代码段如下所示:

xScl, zScl = 'linear', 'linear'

data1, data2 = map(np.array, [data1, data2])

# Figure out the right scaling for different sets of data
if np.abs(data1).max() > 1000: 
    if data1.min() <= 0: 
        data1 = data1 - data1.min() + 1 
        # data1 = np.log10(data1)
        xScl  = 'log'
if np.abs(data2).max() > 1000: 
    if data2.min() <= 0: 
        data2 = data2 - data2.min() + 1 
        # data2 = np.log10(data2)
        zScl  = 'log'


for (n, f, d1, d2) in zip(ns, freqs1, data1, data2):

    ax.plot(    d1, [f/1e3]*len(d1), d2[abs(offset) <= 5], 
                's', mfc='None', mec=myCmap(n), label='%.3f Gbps'%(f/1e3))

    print d1.min(), d2.min()
可以看出,应按对数比例缩放的第二列已更改,以使最小值变为1。这就是我想要的。此外,检查结束时,xScl=='linear',而zScl=='log'

但是,当我尝试设置z比例时,如下所示:

ax.set_xscale(xScl)
ax.set_zscale(zScl) # <-- problem occurs here
但事实并非如此,我们可以从打印结果中看到。最小值为1,应该可以

另一方面,如果我在上面的代码中手动取对数:

if np.abs(data1).max() > 1000: 
    if data1.min() <= 0: 
        data1 = data1 - data1.min() + 1 
        data1 = np.log10(data1)
        # xScl  = 'log'
if np.abs(data2).max() > 1000: 
    if data2.min() <= 0: 
        data2 = data2 - data2.min() + 1 
        data2 = np.log10(data2)
        # zScl  = 'log'
这个很好用。这意味着我的数据没有问题。然而,我不想这样画。我想看看实际的数字,但轴按对数缩放。看起来Matplotlib有问题吗?不确定

我正在使用

视窗7

Pyhtonx,y

Python版本:Python 2.7.5默认版本,2013年5月15日,22:43:36[MSC v.1500 32位英特尔]

pylab.version->“1.8.0”


任何帮助都将不胜感激。谢谢大家!

您使用的是什么版本的mpl?我想派拉布。在挑选你的裸体版时。我想我们已经为1.4.0解决了这个问题。另外,谢谢你的评论。我的mpl版本是“1.3.1”。我将尝试升级到最新版本并发布任何更新。
In [196]: run analysis.py
-0.510256538272 10041
[... some deleted lines here ...]
-1.12656273628 9717
-0.796174863994 12101
-0.664695283706 14072
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)

[... some deleted lines here ...] 

    151     ax.set_xscale(xScl)
--> 152     ax.set_zscale(zScl)
    153
    154     pl.show()

[... some deleted lines here ...] 

ValueError: Data has no positive values, and therefore can not be log-scaled.
if np.abs(data1).max() > 1000: 
    if data1.min() <= 0: 
        data1 = data1 - data1.min() + 1 
        data1 = np.log10(data1)
        # xScl  = 'log'
if np.abs(data2).max() > 1000: 
    if data2.min() <= 0: 
        data2 = data2 - data2.min() + 1 
        data2 = np.log10(data2)
        # zScl  = 'log'