importmatplotlib.pyplotaspltimportnumpyasnpimportmath# Rutherford cross sectiondefcross_section():thetas=np.linspace(0.1,math.pi,100)sigmas=1/(np.sin(thetas/2)**4)thetas=[np.degrees(theta)forthetainthetas]return(thetas,sigmas)thetas,sigmas=cross_section()fig,ax1=plt.subplots()color='tab:red'ax1.set_xlabel('scattering angle (degrees)')ax1.set_ylabel('cross section',color=color)ax1.plot(thetas,sigmas,color=color)ax1.tick_params(axis='y',labelcolor=color)ax2=ax1.twinx()# instantiate a second Axes that shares the same x-axiscolor='tab:blue'ax2.set_ylabel('10000x',color=color)# we already handled the x-label with ax1# Drop large values at beginning and let auto-scaling redraw it larger.ax2.plot(thetas[-69:],sigmas[-69:],color=color)ax2.tick_params(axis='y',labelcolor=color)fig.tight_layout()# otherwise the right y-label is slightly clippedplt.text(100,10,"$1/\sin^4(\Theta/2)$",fontsize='x-large')fig.savefig("RutherfordCrosssection2Scales.png")plt.show()
Licensing
I, the copyright holder of this work, hereby publish it under the following license:
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.
http://creativecommons.org/publicdomain/zero/1.0/deed.enCC0Creative Commons Zero, Public Domain Dedicationfalsefalse
Captions
Rutherford scattering cross-section is strongly peaked around zero degrees, and yet has nonzero values out to 180 degrees.