Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 Matplotlib y轴比例未拟合值_Python_Python 3.x_Matplotlib - Fatal编程技术网

Python Matplotlib y轴比例未拟合值

Python Matplotlib y轴比例未拟合值,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我用以下公式绘制二项分布的概率质量函数: fig=plt.figure(figsize=(10,10)) binom=[scs.binom.pmf(k,100,0.2) for k in range(100)] print(np.max(binom)) #0.0993002148088 [plt.axvline(k,ymax=scs.binom.pmf(k,100,0.2)) for k in range(100)] plt.ylim(ymax=0.1) plt.show() 如您所见,bi

我用以下公式绘制二项分布的概率质量函数:

fig=plt.figure(figsize=(10,10))
binom=[scs.binom.pmf(k,100,0.2) for k in range(100)]
print(np.max(binom)) #0.0993002148088
[plt.axvline(k,ymax=scs.binom.pmf(k,100,0.2)) for k in range(100)]
plt.ylim(ymax=0.1)

plt.show()
如您所见,binom的最大值为0.099300意味着绘图应接近y轴的上限,但结果如下:

那么我做错了什么?为什么图形不符合极限?

问题在于,对于
ymax
,接受0到1范围内的值(即,它在轴坐标中,而不是数据坐标中)。从文档中:

ymax
:标量,可选,默认值:1

应介于0和1之间,0为绘图底部,1为绘图顶部

因此,您告诉它只在轴的上方0.1处绘制。如果您希望继续使用
axvline
进行绘图,则需要在绘图之前缩放值

e、 g

或者,您可能希望使用
plt.bar
绘制此图;例如:

plt.bar(range(len(binom)), binom)
问题在于,对于
ymax
,接受0到1范围内的值(即,它位于轴坐标中,而不是数据坐标中)。从文档中:

ymax
:标量,可选,默认值:1

应介于0和1之间,0为绘图底部,1为绘图顶部

因此,您告诉它只在轴的上方0.1处绘制。如果您希望继续使用
axvline
进行绘图,则需要在绘图之前缩放值

e、 g

或者,您可能希望使用
plt.bar
绘制此图;例如:

plt.bar(range(len(binom)), binom)

我想你可能想用一个


我想您可能需要使用一个


可以,但如果每次都要重新缩放ymax值,这不是很方便。那么我如何使用plt.bar()来解决它呢?类似于:
plt.bar(range(len(binom),binom)
应该这样做,但是如果每次都要重新缩放ymax值,这不是很方便。那么我如何使用plt.bar()来解决它呢?类似于:
plt.bar(range(len(binom),binom)
应该这样做
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as scs

fig=plt.figure(figsize=(10,10))
binom=[scs.binom.pmf(k,100,0.2) for k in range(100)]

# Scale the yvalues by ymax
plt.stem(binom, linefmt='b-', markerfmt='none', basefmt='none')

plt.show()