偏振光實驗的計算機作圖

2021-02-08 波本的咖啡屋

用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.圖帶水印,直接搬運去做實驗報告可不好哦,需要可以聯繫我)

分享原始碼

# 大物實驗數據處理 光的偏振# JamesBourbon in 20200524# 極坐標作圖的極好例子
import numpy as npimport matplotlib.pyplot as pltimport pandas as pdimport statsmodels.api as sm
def linear(x, y): # 線性回歸擬合,一個非常高端的擬合算法 x_n = sm.add_constant(x) # statsmodels進行回歸時,一定要添加此常數項 model = sm.OLS(y, x_n) # model是回歸分析模型 results = model.fit() # results是回歸分析後的結果 # 輸出回歸分析的結果並進行線性回歸出圖 print(results.summary()) print('Parameters: ', results.params) print('R2: ', results.rsquared) # 擬合係數的排列方法和多項式係數排列方法相反 # 需要在這裡做一個多項式係數的reverse result_poly = [] result_poly.append(results.params[1]) result_poly.append(results.params[0]) return np.array(result_poly), results.rsquared # 返回線性擬合參數和R^2值

input_file = "光的偏振.csv"
lw = 3.5ms = 12.5fs = 22font = 'KaiTi'# font = 'Arial Unicode MS# 配色:紅紫配色 探索出來的很好的雙色配色法# 極坐標圖的顯示是角度制,輸入是弧度制
data = pd.read_csv(input_file)x = np.array(data['\\theta'])x_r = np.array(data['\\theta'] * np.pi/180)y0 = np.array(data['I_0'])y1 = np.array(data['I_1/4_30'])y21 = np.array(data['I_1/2_0'])y22 = np.array(data['I_1/2_30'])cosx2 = np.cos(x_r) ** 2
# 線性擬合P_linear, R2 = linear(cosx2, y0)xx = np.arange(0, 1, 0.01)yy = np.polyval(P_linear, xx)
# 馬呂斯定律plt.figure(1)
plt.rcParams['font.family'] = fontplt.rcParams['font.size'] = fs-2# 調整matplotlib內部設置使之支持中文,這種方法改變全局設置# 坐標軸刻度my_x_ticks = np.arange(0, 390, 30)plt.xticks(my_x_ticks)# 作圖plt.plot(x, y0, '-.',color='purple', linewidth=lw)plt.plot(x, y0, 'ro', label='實驗數據點', markersize=ms,)plt.xlabel('θ /°', fontsize=fs)plt.ylabel('光強I', fontsize=fs)plt.title('驗證馬呂斯定律曲線', fontsize=fs+4)plt.grid()plt.legend()
# 馬呂斯定律線性擬合plt.figure(2)plt.rcParams['font.family'] = fontplt.rcParams['font.size'] = fs-2# 調整matplotlib內部設置使之支持中文,這種方法改變全局設置plt.plot(xx, yy, '-.', color='purple', label='擬合曲線', linewidth=lw)plt.plot(cosx2, y0, 'ro', label='實驗數據點', markersize=ms ,linewidth=lw)plt.xlabel(r'$cos^2(θ)$', fontsize=fs)plt.ylabel('光強I', fontsize=fs)plt.title('驗證馬呂斯定律線性擬合線', fontsize=fs+4)# 擬合線描述圖例txt_point = (0.6, 15)# 找到的一個最好點,亦可對此處代碼進行改進msg = '擬合方程: y = {:.4g} x + {:.4g}\n R2 = {:.4f}'.format( P_linear[0], P_linear[1], R2)plt.annotate(msg, xy=txt_point, xytext=txt_point)plt.grid()plt.legend()
# 1/4波片的I的極坐標圖# Matplotlib最強大的調整是面向對象的方法fig3 = plt.figure(3)plt.rcParams['font.family'] = fontplt.rcParams['font.size'] = fs-2# 調整軸對象的屬性ax1 = fig3.add_axes([0.1,0.1,0.8,0.8],polar=True)# 添加極坐標軸的默認方法# ax1.set_thetamin, thetamax, rmin rmax, yticks# 不能用坐標圖常用的plt.xticks方式ax1.set_xticks(np.arange(0, 2*np.pi, np.pi/6))# 調整matplotlib內部設置使之支持中文,這種方法改變全局設置ax1.plot(x_r, y1, '-',color='purple', lw=lw)ax1.plot(x_r, y1, 'o', color='red', label='偏離光軸30度', ms=ms)ax1.set_xlabel('θ /°', fontsize=fs)# ax1.set_ylabel('光強I', fontsize=fs,)ax1.set_title('通過1/4波片的偏振光光強-角度曲線', fontsize=fs+4)fig3.legend(loc='best')
# 1/2波片的I的極坐標圖# 紅紫配色方案和紅棕配色方案都是科研作圖的不錯選擇fig4 = plt.figure(4)plt.rcParams['font.family'] = fontplt.rcParams['font.size'] = fs-2# 調整matplotlib內部設置使之支持中文,這種方法改變全局設置ax2 = fig4.add_axes([0.1,0.1,0.8,0.8],polar=True)ax2.set_xticks(np.arange(0, 2*np.pi, np.pi/6))
ax2.plot(x_r, y21, 'o-', color='red', label='偏離光軸0度', ms=ms, lw=lw)ax2.plot(x_r, y22, 'o-', color='purple',label='偏離光軸30度', ms=ms, lw=lw)ax2.set_xlabel('θ /°', fontsize=fs)# ax2.set_ylabel('光強I', fontsize=fs,)ax2.set_title('通過1/2波片的偏振光光強-角度曲線', fontsize=fs+4)fig4.legend(loc='best')
plt.show()

以及,用pandas的pd.read_csv導入數據的數據表大概的樣子:

\theta,I_1/4_30,I_1/2_30,I_1/2_0,I_00,31.24,12.5,49.98,49.9810,34.57,20.65,48.48,48.4820,36.74,29.33,44.14,44.1430,37.49,37.49,37.49,37.4940,36.74,44.14,29.33,29.33.

於是乎,只要改動這個csv裡面的輸入數據,就可以實現不同實驗結果的快速做圖分析,於是乎,這個python腳本可以被拿來無限次地對這個實驗進行分析了

啊等我有時間去維護一下那個experiment_kit...它的一些思想可以參見我前期的一些推送(關注我,在主頁點擊「技術推送」可以看到),如果有朋友願意把那個項目發展成自帶前端代碼內嵌的優秀應用的話歡迎與我聯繫,我自己是沒精力做那個了....

你以為這就完了?

這次的主題還真的不是python,而是...

這萬惡的Origin怎麼這麼香啊

此前一直在尋求用python來完全替代Origin,不管是普通的plot,還是線性擬合,甚至是作DOS圖並計算d帶中心,都是自己打開VScode寫代碼完成的,

理由很簡單

Origin就是感覺解析度不如matplotlib做出來的,說白了就是醜matplotlib在習慣了之後特別舒適,只要copy一下代碼再改參數就可以得到類似的圖,並且可以實現數據與作圖功能的分離,實現自動化作圖與重複性作圖代碼塊作圖可以明確哪個代碼管圖層的哪個部分,適合精細化作圖Mac沒有Origin,每次做個圖要打開虛擬機,佔用資源過多,有點不爽

不過自從我真的拋下偏見去用一用Origin,情況完全就不一樣了....

無教程盲摸,不到半小時,一張符合要求的極坐標圖就出來了....

這可怎麼的了啊....去年八月的時候在老闆面前用py作圖被老闆說「你Origin遲早要學的」,當時不以為然,沒想到這圖形界面一用起來居然這麼上手啊...這就是命令行用久了的人嘛....


現在覺得:嗯,真香.jpg

至於「必須要開虛擬機」....在家這幾天我想想我都用虛擬機玩過些啥了

魔獸爭霸+DOTA(把百度網盤裡面的老遊戲搞了下來)

甚至還拿虛擬機跑高斯和Castep的計算任務....

好像也沒啥啊,16G內存完全帶的起...本來機子就是要生產力啊...

逐漸沒有理由拒絕Origin了...而且Origin裡面的曲線擬合模型在使用上明顯比matlab和py來得簡單方便實用...python和matlab最大的好處就是代碼系統的可遷移重複性,但對於只需要進行一次作圖的任務來說目前感覺Origin的便捷度和可調性都是可以的...而且Origin9的解析度已經不比matplotlib差到哪去了...

雖然目前還不會很精細的調整——因為我還沒系統學過

不過,上面那樣的作圖代碼從開始到完成到優化到最終出結果一般都要四五個小時...而熟練了Origin之後應該也就半小時的事情...

好了,讓旅途逐漸開始吧

關注我,後臺回復Origin,可以得到Origin軟體包與系列教程哦

行道之人,總得時不時,跳出舒適圈,努力向外走。

哦對了,這裡要致謝Rika,mdnice是真的香啊(笑)

歡迎大家繼續與我多多交流啦

我知道你在看哦👀💖

相關焦點

  • 鮮為人知的:偏振光技術
    [1]  具有偏振性的光則稱為偏振光。檢測光的偏振現象可以藉助於實驗裝置進行檢測,P1、P2是兩塊同樣的偏振片。通過一片偏振片p1直接觀察自然光(如燈光或陽光),透過偏振片的光通過偏振片的透射光,它的振動限制在某一振動方向上,我們把第一個偏振片P1叫做「起偏器」,它的作用是把自然光變成偏振光,但是人的眼睛不能辨別偏振光。必須依靠第二片偏振片P2去檢查。旋轉P2,當它的偏振化方向與偏振光的偏振面平行時,偏振光可順利通過,這時在P2的後面有較亮的光。當P2的偏振方向與偏振光的偏振面垂直時,偏振光不能通過,在P2後面也變暗。
  • 【小麓講堂】偏振光學基礎知識(一):理解偏振光
    團隊成員全部是碩士以上學歷,其中20%具有博士學歷,團隊成員來自國內外知名企業及高校,深耕科研和工業行業多年,具備紮實的光學理論基礎,及仿真算法、生產工藝、實驗系統設計和集成器件開發經驗。光可以看作是一種橫電磁波,它具有相互耦合的電場分量和磁場分量。
  • 《少女前線》偏振光兔子洞怎麼過 偏振光兔子洞通關攻略
    導 讀 少女前線偏振光兔子洞挑戰中我們開荒可以達到19W,確實很給力,同時在搭配方面要根據戰區來選擇,下面九遊大大就帶來詳細打法詳情吧
  • 《少女前線》偏振光兔子洞怎麼打 偏振光兔子洞高分打法教學
    導 讀 少女前線偏振光兔子洞很多小夥伴還沒有達到很高的分數,其實兔子洞這關並不難,撐住8個回合就可以了,
  • 少女前線真核面具偏振光能兌換哪些人形?真核面具偏振光兌換推薦...
    少女前線真核面具偏振光是即將在1月16日開啟的冬活偏振光,活動可以兌換的人形正式公布了出來,兌換通過下方的列表為大家呈現了出來,小編還為大家推薦幾個適合的真核面具偏振光兌換選擇,不知道選什麼的玩家可以參考。
  • 物理老師魔性實驗走紅,新東方在線帶你盤點中考物理作圖重點題型
    (原標題:物理老師魔性實驗走紅,新東方在線帶你盤點中考物理作圖重點題型)
  • 紅外偏振光治療儀的光源控制技術
    王  婉,劉  敏,劉振洗 (中國電子科技集團公司 第四十一研究所,安徽 蚌埠 233010)摘  要:本文首先介紹了紅外偏振光治療儀光源控制模塊的硬體設計方案,主要包括光源控制模塊的組成及實 現方法。
  • 《少女前線》偏振光兔子洞打法攻略
    18183首頁 少女前線 《少女前線》偏振光兔子洞打法攻略 《少女前線》偏振光兔子洞打法攻略 來源:網絡
  • 三氯化六氨合鈷綜合實驗的python自動化作圖方法
    本學期的有機實驗終於過去,終於可以好好鼓搗一下python能大顯身手的實驗了,前面幾個分析和生化實驗也沒啥好作圖的,不過無機和物化裡面用到線性擬合圖像以及其他圖像的地方還是非常多總之,所有的」origin作圖「,理論上全都可以用python代替,origin的優勢在於拿起就能做,而python的優勢在於一勞永逸1.
  • 【小麓講堂】偏振光學基礎知識(二):偏振光的產生方法
    團隊成員全部是碩士以上學歷,其中20%以上具有博士學歷,團隊成員來自國內外知名企業及高校,深耕科研和工業行業多年,具備紮實的光學理論基礎,及仿真算法、生產工藝、實驗系統設計和集成器件開發經驗。從上一節小麓講堂可以知道,普通光源發出的光不是偏振光,需要人為地由非偏振光獲取偏振光。今天就來談談產生偏振光的幾種方法。
  • 【小麓講堂】偏振光與LCD、OLED、3D、AR到底有什麼關係?
    眼睛接收到的光可以分為兩種,一種是非偏振光,例如我們看到的自然景觀、花草動物、街景人物,都是屬於非偏振光在人眼成像;另一種是偏振光,我們通過多媒體電子設備(例如手機、電腦、電視、3D電影)所看到的影像信息,大多屬於偏振光在人眼成像。在這裡先簡要說明什麼是偏振光。光可以看作是一種橫電磁波,它具有相互耦合的電場分量和磁場分量。
  • 偏振光創造的莫比烏斯帶
    偏振太陽鏡能夠阻擋這個方向的偏振光,從而極大的減少眩光,但同時讓其它光進入。在實驗裡,為了產生莫比烏斯帶,研究人員使用了一種特定奇特類型的光:一種高度集中的光束,常被稱為結構光。結構光是光束裡具有特定偏振和密度分布——因此光束不同部分的電磁場振蕩是各不相同的。光線移動的方向並非總是位於正確的角度,即使標準雷射也如此。在這樣高度結構化的光束裡,電場在三維方向將均有分布。
  • 一本書就能解決科研作圖難,作圖醜的問題!
    有趣的是,每分每秒、國內國外,都有無數的科研工作者遊走在這藝術的邊緣,如同設計精妙的實驗一樣,他們期待圖片中每個元素都能物盡其用,充分表達出自己的實驗思路、成果,讓更多同行翻閱自己文章的時候,能心領神會,甚至會心一笑。但是國內的大部分科研人只會用蹩腳的PPT元素堆砌,不僅格調低,旁人還難以明白要表達的意思。
  • 繞過濾光片:科學家用偏振光讓OLED屏幕功耗降低一倍
    近期英國研究人員在偏振光方面取得重大突破,有望為智慧型手機最耗電的部件--屏幕提供更好的解決方案。 眾所周知,延長手機續航時間最簡單的方法就是降低屏幕亮度,這是因為屏幕如果產生清晰、明亮的效果需要消耗更多的能量來發出光線。智慧型手機屏幕和許多其他類型的濾光片可以減少來自外部光源的眩光效果。
  • (913)SCI終身免費潤色神器,插入Word邊寫邊潤色,還有SCI實驗+論文作圖手把手教學全套視頻教程免費領取!
    首先,做科研要會做實驗,做了實驗數據處理及作圖,完了還要寫論文。這些都是我從小白一步一步摸索的,收集了很多資料。所以,我今天繼續把我的做科研實驗的全部資料:「SCI實驗+論文作圖手把手教學全套視頻教程+SCI免費潤色神器」一共20GB,從做實驗、到論文作圖、到論文潤色軟體,再到投稿教學;全套視頻教程,非常齊全
  • 學術繪圖丨多組多指標如何進行作圖
    導言藥學試驗中通常會設置多個實驗組,而多個實驗組中又會有很多個劑量組,對於這種圖,如何使用軟體很方便快捷的來做圖呢?當然是使用Graphpad來作圖,這樣最快速,最快捷!下來我們看一下如何使用軟體作圖!
  • 中考複習|物理作圖題專項匯總(含答案)
    :1.考查點及分值:作圖題考查學生對物理概念和規律的理解,也可以考查學生的建立物理模型的能力及設計能力。2.考查形式及重點:中考作圖題主要在力學、光學和電磁學部分。力學部分重點考查力的示意圖。其次是力臂作圖;光學部分重點考查光的反射、光的折射作圖、平面鏡成像等相關的作圖;電磁學部分重點考查電路的設計、連接和對電路的識別和改錯。
  • 隴川縣中醫醫院紅外偏振光治療儀、幹擾電治療儀採購項目 競爭性...
    隴川縣中醫醫院紅外偏振光治療儀、幹擾電治療儀採購項目競爭性談判成交結果公告                    項目名稱:隴川縣中醫醫院紅外偏振光治療儀、幹擾電治療儀採購項目。2.採購預算:28.8萬元。3.
  • 用於自供電圓偏振光檢測的手性無鉛雜化鈣鈦礦
    用於自供電圓偏振光檢測的手性無鉛雜化鈣鈦礦 作者:小柯機器人 發布時間:2020/12/25 14:32:20 近日,中國科學院物構所羅軍華團隊開發了用於自供電圓偏振光檢測的手性無鉛雜化鈣鈦礦。