Matplotlib - 当我切换到semilog图时数据消失

时间:2010-10-26 20:37:42

标签: logging scale matplotlib

我试图用pyplot和matplotlib绘制一个基本的semilog图,y轴是对数刻度。我使用以下代码:

pylab.figure(num=None,figsize=(8,6))  
pylab.plot(x_loc,var1,x_loc,var2)  
\#pylab.yscale('log')  
pylab.xlabel('$y/L_{1/2}$',fontsize=18)  
pylab.ylabel('$n/n_{max}$',fontsize=18)  
pylab.title('Particle Concentration vs. Position',fontsize=18)  
pylab.show() 

这给了我一个精细的线性图,第三行如上所述,但是当我取消注释该行并重新运行时,数据从图中消失。绘图窗口具有正确的限制,但不再有数据。

以前有人遇到过这个问题吗?

谢谢!
彼得

3 个答案:

答案 0 :(得分:1)

通过使用set_yscale('log'),您可以在创建对象时更改yscale的属性。试一试,看看它是否能解决您的问题。这方面的文档在这里:http://matplotlib.sourceforge.net/api/axes_api.html#matplotlib.axes.Axes.set%5Fyscale

另外,尝试更改渲染。做一个:

from matplotlib import use
use('TkAgg')
import pylab

(仅在使用命令后导入pylab)

答案 1 :(得分:1)

这个问题提到了semilog图有问题,但代码说明了一个简单的对数图。 在任何情况下,绘图或绘图部分消失的常见问题是由于数据点具有零值或负值 - 因为这些不能用实数表示,因此它们从图中省略。但是有可能让matplotlib使用其 symlog 比例绘制这些值,该比例使用阈值 linthreshy 组合日志和线性比例,在这些比例下它们会改变,例如:

 pylab.yscale('symlog',linthreshy=1)

有关symlog和日志图之间差异的更详细说明,请参阅此answer

答案 2 :(得分:0)

看起来它是我正在使用的EPDLab包中的一个错误(来自Enthought)。如果我从IPython或终端(python'filename')运行此命令,则输出图正确。

相关问题