近況
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()