首页 > 解决方案 > 整理 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)

'''代码'''

有人可以帮助纠正第一组代码来实现这一点吗?

标签: pythonnumpymatplotlibgraphjupyter

解决方案


推荐阅读