我有一个问题是绘制一些数据和拟合的信息框。玩具示例如下。
import numpy as np
import matplotlib.pyplot as plt
#Works
sigma = 0.12
mu = 0.5
#Half Works
sigma = 0.1
mu = 0.3
##None Works
#sigma = 0.05
#mu = 0.2
Sample = np.random.normal(mu, sigma, 10000)
figHS = plt.figure()
axHS = figHS.add_subplot(1, 1, 1)
n, histbins, patches = axHS.hist(Sample,100, histtype='step', normed=1)
axHS.annotate("$\mu=%.3f$ \n $\sigma=%.3f$ \n $N=%i$"%
(Sample.mean(), Sample.std(), len(Sample)),
xytext=(0.8, 0.85), bbox=dict(boxstyle="sawtooth", fc="w"),
xy=(0.8, 0.85), textcoords='axes fraction')
axHS.plot(histbins, plt.mlab.normpdf(histbins, mu, sigma))
axHS.annotate(" $\mu=%.3f$ \n $\sigma=%.3f$ \n $N=%s$"%(mu,sigma,"--"),
xytext=(0.6, 0.85), bbox=dict(boxstyle="round", fc="w"),
xy=(0.6, 0.85), textcoords='axes fraction')
plt.show()
如果您尝试使用三个不同的输入值,您可以看到它与x范围有关。它可能在1以下处理不同或从错误的对象获取范围。由于这是一个玩具示例,我在实际使用案例中受到更多限制,因此请不要建议我以完全不同的方式执行此操作,除非像#34; histbins"以类似的方式传递。
答案 0 :(得分:1)
这是之前讨论过的问题see
def anno_example(sigma, mu):
Sample = np.random.normal(mu, sigma, 10000)
figHS = plt.figure(figsize=(9,6))
axHS = figHS.add_subplot(1, 1, 1)
n, histbins, patches = axHS.hist(Sample,100, histtype='step', normed=1)
axHS.plot(histbins, plt.mlab.normpdf(histbins, mu, sigma))
axHS.annotate("$\mu=%.3f$ \n $\sigma=%.3f$ \n $N=%i$"%
(Sample.mean(), Sample.std(), len(Sample)),
xytext=(0.8, 0.85), bbox=dict(boxstyle="sawtooth", fc="w"),
xy=(0.8, 0.85), xycoords=axHS.transAxes)
axHS.annotate(" $\mu=%.3f$ \n $\sigma=%.3f$ \n $N=%s$"%(mu,sigma,"--"),
xytext=(0.6, 0.85), bbox=dict(boxstyle="round", fc="w"),
xy=(0.6, 0.85), xycoords=axHS.transAxes)
anno_example(0.12, 0.5)
anno_example(0.1, 0.3)
anno_example(0.05, 0.2)
只需将textcoords="axes fraction"
替换为xycoords=axHS.transAxes
或xycoords="axes fraction"
即可。