近況

f:id:ChiyosBigDragon:20181216000655p:plain f:id:ChiyosBigDragon:20181216000736p:plain

import numpy as np
import sympy
from scipy.optimize import curve_fit
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
fp = FontProperties(fname=r'C:\WINDOWS\Fonts\ipagp.ttf',size=28) # 日本語入力用
plt.rcParams['xtick.direction'] = 'in' # x軸の目盛りin/out/inout
plt.rcParams['ytick.direction'] = 'in' # y軸の目盛りin/out/inout
plt.rcParams['xtick.major.width'] = 1.0 # x軸主目盛り線の線幅
plt.rcParams['ytick.major.width'] = 1.0 # y軸主目盛り線の線幅
plt.rcParams['axes.linewidth'] = 1.0 # 軸の線幅edge linewidth。囲みの太さ
plt.rcParams['font.size'] = 20 # フォントサイズを設定 default : 12
# plt.rcParams['xtick.labelsize'] = 15 # 横軸のフォントサイズ
# plt.rcParams['ytick.labelsize'] = 15 # 縦軸のフォントサイズ
# plt.rcParams["figure.figsize"] = [20, 12] # グラフサイズ
# plt.gca().set_xscale('log')  # x軸をlogスケールで
orange = "#ff9800"
cyan = "#2196f3"
red = "#f44336"

# データ取得
x,y = np.loadtxt("./input", unpack=True)

# プロット
plt.plot(x,y,"o-",color=orange,label="Rating") # 折れ線
# plt.scatter(x,y,color="#ff9800",label="Rating") #散布図

# スプライン補間
# f = interp1d(x,y,kind='cubic') # 2d='quadratic'
# x1 = np.linspace(x[0],x[-1],1000)
# plt.plot(x1,f(x1),'-',color=cyan)

# フィッティング
def fit_func(x,a,b,c):
    return a*np.log10(x+b)+c
res,cov = curve_fit(fit_func,x,y)
print(res)
a=res[0]
b=res[1]
c=res[2]
x1 = np.linspace(0,800,100) # [0,800]を100等分したxの値を生成
y1 = a*np.log10(x1+b)+c
plt.plot(x1,y1,color=cyan,label="Fitting")
plt.scatter(10**((1600-c)/a)-b,1600,color=red,label="Fitting")
pre = int(np.ceil(10**((1600-c)/a)-b))
plt.text(pre,1600,pre,color=red)

# 表示
plt.xlim(0,800)
plt.ylim(0,1700)
plt.xlabel('Day',fontproperties=fp) # x軸ラベル
plt.ylabel('Rating',fontproperties=fp) # y軸ラベル
plt.grid(which="both") # グリッド表示
# plt.legend(prop=fp) # 凡例表示/場所指定loc="upper left"
plt.show()