Python pylab 3d轴测井刻度问题
所以我用matplotlib创建了一个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
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'