轉載自:https://www.jianshu.com/p/4d7d7e4ff4f8
基於python的擬合線置信區間
首先看下本文作者用自己數據基於python出來的圖
注:第二張圖例的slope和p值是後期p上去,第一張圖是基於python,第二張是基於R
本文引入python的第三方庫seaborn進行繪製,庫的安裝可使用pip install seaborn命令進行安裝。具體如下:
(1)推薦安裝Anaconda,具體軟件的鏈接自行百度
(2)選擇圖中的紅線部分,打開後在裏面輸入pip install seaborn即可以安裝成功了
打開裏面的Spyder程序,通過file-new file新建腳本,輸入以下命令即可
import seaborn as sns
tips = sns.load_dataset("tips") #導入sns中自帶的數據集
sns.regplot(x="total_bill",y="tip",data=tips)
結果如下:
如果說我們的數據格式是excel的,先另存爲csv格式的
然後用如下代碼:
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
plt.figure(figsize=(5, 5)) #設置圖片的長和寬
data = pd.read_csv(u'D://test.csv') #讀取存放的文件
sns.regplot(x="total_bill",y="tip",data=data)
結果如下
上面的圖片結果中的分辨率較低,後續需要進一步保存爲高質量的圖片。主要是加入plt.savefig命令完整代碼如下
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
data = pd.read_csv(u'D://test.csv') #讀取存放的文件
plt.figure(figsize=(5, 5))
sns.regplot(x="total_bill",y="tip",data=data)
plt.savefig(u'D://test.pdf')
結果如下:
建議大家安裝Adobe Acrobat Pro版本的pdf編輯器,能夠對pdf進行再次編輯,調整裏面的字體和大小及顏色等,簡直神器。
當我們需要進行分兩組進行擬合,並要將結果顯示在同一張圖時,採用lmplot函數並增加一個參數hue就能實現,具體如下
import seaborn as sns
from matplotlib import pyplot as plt
tips = sns.load_dataset("tips")
plt.figure(figsize=(5, 5))
sns.lmplot(x="total_bill",y="tip",hue="sex",data=tips)
plt.savefig(u'D://test2.pdf')
結果如下:
在D盤下面也會生成test2.pdf這個文件。但當分組類別比較多的時候就不適用於把這麼多組放在同一張圖裏面,此時如何做呢?
答案是將上述代碼中的hue改爲col即可,
import seaborn as sns
from matplotlib import pyplot as plt
tips = sns.load_dataset("tips")
plt.figure(figsize=(5, 5))
sns.lmplot(x="total_bill",y="tip",col="sex",data=tips)
plt.savefig(u'D://test2.pdf')
結果如下
通過上述代碼遍能夠生成pdf格式的帶擬合線置信區間的折線圖了,然後用ps打開pdf便可以隨意設置分辨率。
注意:目前如何調出擬合線的方程並自動添加R2本人還沒有做出來,需要後續通過ps將R2和方程給p上去。
作者最後用自己的數據生成代碼如下:
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
data = pd.read_csv(u'D:\\haihe.csv') #讀取存放的文件
plt.figure(figsize=(10, 6))
sns.lmplot(x="year",y="value",data=data,hue="type")
plt.savefig(u'D://haihe.pdf')
數據格式請參考上述代碼中的tips數據集的格式
作者:畫長空_yin
鏈接:https://www.jianshu.com/p/4d7d7e4ff4f8
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。