用python做完这四幅图之后我觉得还是该学学Origin吧 ——J.C.Bourbon
一直在寻求用python完全代替Origin,这不,这会的大物实验——光的偏振,要做极坐标,马上就来劲了。
最初的版本是很直接plt.polar(theta,r)
,但这样做出来的图有一点致命的问题——所有设置都是默认的,没法去调整,如果用此前作图时用的精细化调整方法plt.xlim(), plt.xticks()
会报错。
这里面有一个很大的问题——如果不作调整的话极坐标图角度默认以45°为间隔。而这个实验的结果是每10°读一个数得到的,45°截距完全不能体现科学作图的宗旨
这就是那个自己感觉都不太行的45度截距图
以及它对应的代码片段
# 普通极坐标图plt.figure(5)plt.rcParams['font.family'] = fontplt.rcParams['font.size'] = fs-2# 调整matplotlib内部设置使之支持中文,这种方法改变全局设置plt.polar(x_r, y21, 'o-', color='red', label='偏离光轴0度', ms=ms, lw=lw)plt.polar(x_r, y22, 'o-', color='purple',label='偏离光轴30度', ms=ms, lw=lw)plt.xlabel('θ /°', fontsize=fs)# ax2.set_ylabel('光强I', fontsize=fs,)plt.title('通过1/2波片的偏振光光强-角度曲线', fontsize=fs+4)plt.legend(loc='best')
经不懈搜索学习,明确了一点:Matplotlib.pyplot一旦要把图做的很细致,就一定是要回到python的最初的属性——面向对象的编程思想。要把图层,图轴等全部作为对象处理才能得到很好的结果
最终,我大概是得到了我需要的图...光的偏振实验需要三张图,我自己因为用py线性拟合地很得心应手了,也就顺便做了一下。(虽然statsmodels包在我anaconda更新之后突然就没了,搞得还要重装...但anaconda装包还是很方便的)
放最终结果图:一个曲线,一个对应线性拟合,两个极坐标(P.S.图带水印,直接搬运去做实验报告可不好哦,需要可以联系我)