前提・実現したいこと
近似直線を描く
岩手県と秋田県の人口と死亡者数の相関を調べるためのグラフを製作しており、近似直線を書きたいのですが、近似直線が1つしか書けません。どのようにすればいいですか。
発生している問題・エラーメッセージ
近似直線が書けないことです。
エラーメッセージは特にありません
下の画像は岩手県と秋田県の人口と死亡者数のデータです。1列目は岩手県の人口、2列目は岩手県の死亡者数、3列目は秋田県の人口、4列目は秋田県の死亡者数です。
python
1コード 2import numpy as np 3import matplotlib.pyplot as plt 4# データの読み込み 5data = np.loadtxt("aaaaaa.csv", delimiter=",",usecols=[0,1,2,3]) 6x1 = data[: , 0] # population of Iwate 7x2 = data[: , 2]#population of Akita 8y1= data[: , 1] # 死亡数 of Iwate 9y2= data[: , 3] # 死亡数 of Akita 10#図1 11plt.figure(figsize=[6,6]) 12plt.xlabel('population') 13plt.ylabel('死亡数') 14plt.scatter(x1,y1,c="red") 15plt.scatter(x2,y2,c="blue") 16 17print("iwate…red") 18print("akita…blue") 19 20# 最小二乗法 21x1_mean = np.mean(x1) 22x2_mean = np.mean(x2) 23y1_mean = np.mean(y1) 24y2_mean = np.mean(y2) 25x1_var = np.var(x1) 26x2_var = np.var(x2) 27 28x1y1_cov = np.cov(x1,y1,bias=True)[0,1] 29x2y2_cov = np.cov(x2,y2,bias=True)[0,1] 30# 回帰係数 31A1 =x1y1_cov / x1_var 32B1= y1_mean - A1*x1_mean 33A2 =x2y2_cov / x2_var 34B2= y2_mean - A2*x2_mean 35# 回帰直線の関数 36 37def reg(x1) : 38 y1= A1*x1 + B1 39 return y1 40def reg(x2) : 41 y2= A2*x2 + B2 42 return y2 43 44# プロット用x,y 45x1p = [950000,1400000] # xの範囲(任意) 46y1p = [reg(x1p[0]),reg(x1p[1])] 47x2p = [950000,1400000] # xの範囲(任意) 48y2p = [reg(x2p[0]),reg(x2p[1])] 49 50# 図化 51plt.figure(figsize=[6,6]) 52plt.xlim(950000,1400000) 53plt.ylim(10000,20000) 54plt.xlabel('population') 55plt.ylabel('死亡数') 56plt.scatter(x1,y1) 57plt.scatter(x2,y2) 58plt.plot(x1p,y1p,color="red") 59plt.plot(x2p,y2p,color="blue") 60plt.show() 61 62
試したこと
ソースコードを作り直すなど
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。