Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
使用matplotlib在python中设置ylim_Python_Matplotlib - Fatal编程技术网

使用matplotlib在python中设置ylim

使用matplotlib在python中设置ylim,python,matplotlib,Python,Matplotlib,我试图用以下代码绘制一个简单的图形: import numpy as np import matplotlib.pyplot as plt import math # evenly sampled time at 200ms intervals t = np.arange(0., 60, .8) plt.semilogy((((1- np.exp(-t**2/13.94))*(0.000567*(7.78*(1-np.exp(-33**2/t**2))*np.exp(-t/8.76)+1

我试图用以下代码绘制一个简单的图形:

import numpy as np
import matplotlib.pyplot as plt
import math

# evenly sampled time at 200ms intervals
t = np.arange(0., 60, .8)



plt.semilogy((((1- np.exp(-t**2/13.94))*(0.000567*(7.78*(1-np.exp(-33**2/t**2))*np.exp(-t/8.76)+1.50*(1-np.exp(-31**2/t**2))*(np.exp(-t/111.27)-np.exp(-t/8.76)))*10**43))+((1-np.exp(-t**2/13.94))*0.000567*0.05*(np.exp(-t/111.27)-np.exp(-t/8.76))*10**43)), linewidth=2)

#plt.legend([r"$t_{r} \approx (11 - 1)\sqrt{(M_{c}/M_{ch})}d$", r"$t_{r} \approx (11+1)\sqrt{(M_{c}/M_{ch})}d$"], loc='upper right')
plt.ylim(10**39, 10**41)
plt.xlabel("Time (Days)", fontsize =13)
plt.ylabel("Luminosity (erg/s)", fontsize=13)
plt.show()
如果我注释掉
plt.ylim(10**39,10**41)
part,代码就可以正常工作。但是如果不设置ylim,我在情节中有很多我不想要的空白。我收到的错误是:

bolo.py:14: RuntimeWarning: divide by zero encountered in divide
  plt.semilogy((((1- np.exp(-t**2/13.94))*(0.000567*(7.78*(1-np.exp(-33**2/t**2))*np.exp(-t/8.76)+1.50*(1-np.exp(-31**2/t**2))*(np.exp(-t/111.27)-np.exp(-t/8.76)))*10**43))+((1-np.exp(-t**2/13.94))*0.000567*0.05*(np.exp(-t/111.27)-np.exp(-t/8.76))*10**43)), linewidth=2)
Traceback (most recent call last):
  File "bolo.py", line 17, in <module>
    plt.ylim(10**39, 10**41)
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/pyplot.py", line 1604, in ylim
    ret = ax.set_ylim(*args, **kwargs)
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/axes/_base.py", line 3047, in set_ylim
    bottom, top = mtransforms.nonsingular(bottom, top, increasing=False)
  File "/home/trina/anaconda2/lib/python2.7/site-packages/matplotlib/transforms.py", line 2751, in nonsingular
    if (not np.isfinite(vmin)) or (not np.isfinite(vmax)):
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
bolo.py:14:RuntimeWarning:在divide中遇到被零除
plt.符号学(((1-np.exp(-t**2/13.94))*(0.000567*(7.78*(1-np.exp(-33**2/t**2))*np.exp(-t/8.76)+1.50*(1-np.exp(-31**2/t**2))*(np.exp(-t/111.27)-np.exp(-t/8.76))*10**43+((1-np.exp(-t**-2/13.94))-0.000567*
回溯(最近一次呼叫最后一次):
文件“bolo.py”,第17行,在
plt.ylim(10**39,10**41)
文件“/home/trina/anaconda2/lib/python2.7/site packages/matplotlib/pyplot.py”,第1604行,ylim格式
ret=ax.set_ylim(*args,**kwargs)
文件“/home/trina/anaconda2/lib/python2.7/site packages/matplotlib/axes/_base.py”,第3047行,在set_ylim中
底部,顶部=m变换。非奇异(底部,顶部,递增=假)
非奇异格式文件“/home/trina/anaconda2/lib/python2.7/site packages/matplotlib/transforms.py”,第2751行
如果(非np.isfinite(vmin))或(非np.isfinite(vmax)):
TypeError:输入类型不支持ufunc“isfinite”,并且无法根据强制转换规则“safe”将输入安全强制为任何受支持的类型
我不知道如何解决这个问题。谢谢你的建议。 我也附上情节,我没有ylim现在。
你应该这样做:

plt.ylim([float(10**39), float(10**41)])

上限和下限应该在列表或元组中传递,而不是作为单独的参数传递。此外,您的限制似乎太大,您需要手动将其转换为浮点类型。

不幸的是,我仍然收到相同的错误。你能试着在你的终端上编译吗?谢谢!,解决我的问题。我刚才也想到了,我可以做这个'plt.ylim(math.pow(10,39),math.pow(10,40)),它是这样工作的@是的,我认为使用
math.pow()
numpy.power()
更安全。