我正在使用Python及其扩展程序来获取并绘制概率密度函数。虽然我成功绘制了它,但至少在它的形式上,我未能成功地缩放轴。
import decimal
import numpy as np
import scipy.stats as stats
import pylab as pl
import matplotlib.pyplot as plt
from decimal import *
from scipy.stats import norm
lines=[]
fig, ax = plt.subplots(1, 1)
mean, var, skew, kurt = norm.stats(moments='mvsk')
#Here I delete some lines aimed to fill the list with values
Long = len(lines)
Maxim = max(lines) #MaxValue
Minim = min(lines) #MinValue
av = np.mean(lines) #Average
StDev = np.std(lines) #Standard Dev.
x = np.linspace(Minim, Maxim, Long)
ax.plot(x, norm.pdf(x, av, StDev),'r-', lw=3, alpha=0.9, label='norm pdf')
weights = np.ones_like(lines)/len(lines)
ax.hist(lines, weights = weights, normed=True, histtype='stepfilled', alpha=0.2)
ax.legend(loc='best', frameon=False)
plt.show()
结果是
![获得的绘图](https://istack.dev59.com/OjWIF.webp)
虽然我希望它表达为: - x轴以0为中心,与标准差相关 - y轴与直方图和百分比(归一化为1)相关
x轴如下图所示
![期望的绘图](https://istack.dev59.com/25NON.webp)
y轴如下图所示
![期望的Y轴](https://istack.dev59.com/1G8BE.webp)
我已经成功地通过使用指令weights = weights单独绘制柱状图并将其设置到图中来扩展柱状图的y轴,但我在这里做不到。我在代码中包含了它,但实际上在这种情况下它什么也没做。
任何帮助将不胜感激。
lines=[x-av for x in lines]
就可以解决这个问题。无论如何,我无法将我的代码适应那个方式,并且我能绘制图形,但结果非常糟糕。您的意思是我只需要将ax.plot(...)
行“解析”到您的代码中吗? 请问您能否将漏掉的绘图行补充到您的解决方案中?提前致谢。 - Informatico_Sanorange=[-2*sigma,2 *sigma]
。 - MaxNoe