両方の軸で対数的なプロットがあります。これを行うためのpyplotのloglog
機能があります。また、両方の軸の対数目盛も表示されます。
さて、numpy を使用して、私が持っている点のセットに直線を当てはめます。しかし、この線をプロットにプロットすると、直線が得られません。曲線が得られます。
青い線は、おそらく「直線」です。まっすぐにプロットされていません。この直線を赤い点でプロットされた曲線に合わせたい
ポイントをプロットするために使用しているコードは次のとおりです。
import numpy
from matplotlib import pyplot as plt
import math
fp=open("word-rank.txt","r")
a=[]
b=[]
for line in fp:
string=line.strip().split()
a.append(float(string[0]))
b.append(float(string[1]))
coefficients=numpy.polyfit(b,a,1)
polynomial=numpy.poly1d(coefficients)
ys=polynomial(b)
print polynomial
plt.loglog(b,a,'ro')
plt.plot(b,ys)
plt.xlabel("Log (Rank of frequency)")
plt.ylabel("Log (Frequency)")
plt.title("Frequency vs frequency rank for words")
plt.show()