python - 整理 Jupyter Notebook 图表
问题描述
我有以下代码:
'''代码'''
import numpy as np
xvalues = np.array([47.6,49.6, 51.6, 53.6, 55.6, 57.6, 59.6, 61.6])
yvalues = np.array([397.944, 449.601, 498.021, 466.645, 531.621, 570.615, 594.162, 612.822 ])
yerrors = [75.413,75.413,75.413,75.413,75.413,75.413,75.413,75.413]
xerrors = [2,2,2,2,2,2,2,2]
import scipy.optimize as scpo
def Line(gradient, intercept, x):
return gradient*x + intercept
actual_fit_parameters, errors = scpo.curve_fit(Line, xvalues, yvalues)
fit_intercept = actual_fit_parameters[0]
fit_gradient = actual_fit_parameters[1]
ybestfit = Line(fit_gradient, fit_intercept, xvalues)
import matplotlib.pyplot as plt
plt.figure(1).add_axes((0,0,1,1))
plt.figure(1).add_axes((0, 0, 1, 1))
plt.xticks(np.arange(0.0, 62, 10))
plt.yticks(np.arange(-200, 900, 100))
difference = ybestfit - yvalues
normd = difference/yerrors
plt.plot(xvalues, normd, 'or')
plt.gca().set_ylim([-200,900])
plt.xlabel("2s + d")
plt.ylabel("Residuals")
plt.plot(np.arange(10.0,64.0,5.0), [0,0,0,0,0,0,0,0,0,0,0], '--', color = 'grey')
font = {'family': 'serif', 'weight': 'bold', 'size': 14}
'''代码'''
我正在尝试修改它,为下面的代码提供类似的图形输出,但是,我似乎无法正确配置轴。本质上,我想要两个图表,组合在一起,其中一个是给定值的标准图表,以及它们的误差,然后是相同数据的附加残差图表,具有标准化的最佳拟合线和误差线,对于不同的数据集,上面的代码实现了与此非常相似的东西,但是,我似乎无法为我的正确调整它。因此,我需要一些帮助。
'''代码'''
import matplotlib.pyplot as plt
from scipy import stats
import numpy as np
x = np.array([47.6,49.6, 51.6, 53.6, 55.6, 57.6, 59.6, 61.6])
y = np.array([397.944, 449.601, 498.021, 466.645, 531.621, 570.615, 594.162, 612.822 ])
yerr = [75.4134]*len(y)
xerr = [2]*len(x)
fig1 = plt.figure(1)
frame1=fig1.add_axes((.1,.3,.8,.6))
m, b = np.polyfit(x, y, 1)
print('gradient',m,'intercept',b)
plt.plot(x, m*x + b, '-', color='grey', alpha=0.5)
plt.plot(x,y,'.',color='black',markersize=6)
plt.errorbar(x,y,xerr=0,yerr=yerr,linestyle="None",color='black')
plt.ylabel('$1/\sqrt{F}$ $(N)$',fontsize=10)
plt.autoscale(enable=True, axis=u'both', tight=True)
plt.grid(False)
frame2=fig1.add_axes((.1,.1,.8,.2))
s = m*x+b #(np.sqrt(4*np.pi*8.85E-12)/2.23E-8)*x
difference = y-s
plt.plot(x, difference, 'ro')
frame2.set_ylabel('$Residual$',fontsize=10)
plt.xlabel('$2s+d_0$ $(m)$',fontsize=10)
'''代码'''
有人可以帮助纠正第一组代码来实现这一点吗?
解决方案
推荐阅读
- python - 两个数组之间的逐元素 in-operator
- selenium-chromedriver - 如何通过 MVN 命令行传递 CromeOptions
- c# - 如何执行简单的 Couchbase Lite 查询
- sqlite - 如何从 2 个表中获取最近的 DateTime
- tla+ - TLA+ 翻译结果解析失败
- api - 保险库令牌 - 无法传递请求/自定义 TTL 的选项
- php - 大数的算术
- javascript - 使用javascript中的另一个字符串数组对字符串数组进行排序
- c - memcpy long long int(转换为 char*)到 char 数组
- mongodb - MongoDB - 转换数组字段以设置