matplotlib是一個數據可視化工具.
from matplotlib import pyplot
目錄
常規繪圖方法
pyplot.plot(X, Y) # 繪點。 X表示點集的橫座標,Y表示點集的縱座標
pyplot.show() # 顯示
折線圖:
pyplot.plot(X, Y)
散點圖:
pyplot.scatter(X, Y)
Exercise
代碼:
import matplotlib.pyplot as plt
import numpy
import math
def func(x):
y1 = numpy.sin(x-2)
y2 = math.e ** (-x*x)
return y1**2 * y2
x = numpy.linspace(0, 2, 1000)
y = func(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('y = f(x)')
plt.show()
解題思路:
這裏最主要是對numpy和matplotlib中的函數的使用。numpy.linspace(0, 2, 1000)生成一個以0爲起點,2爲終點,間隔相等,共1000個點的列表。plt.plot(x, y)根據x,y中對應的點繪製在圖上並且用直線將相鄰的點連接起來。
運行結果:
代碼:
import matplotlib.pyplot as plt
import numpy
import math
X = numpy.random.normal(size=(20, 10))
z = numpy.random.normal(size = 20)
b = numpy.random.normal(size = 10)
y = numpy.matmul(X, b) + z
b_ = numpy.linalg.lstsq(X, y, None)
b_ = b_[0]
plt.scatter(range(0, 10), b, color = 'red', marker = 'x', label = "real")
plt.scatter(range(0, 10), b_, color = 'blue', marker = '.', label = "estimate")
plt.show()
解題思路:
根據題意這裏需要使用最小二乘法來計算b的估計量,numpy.linalg.lstsq函數返回的第一個值就是b的估計量。scatter函數用於描繪散點圖marker表示的是節點的形狀,此處不知爲何,標籤無法顯示。
運行結果:
11.3
題目
題解
import matplotlib.pyplot as plt
from scipy import stats
import numpy
import math
z = numpy.random.normal(size = 10000)
plt.hist (z , bins=25, normed=1, color='b' )
kde = stats.gaussian_kde(z.T) # 構造多變量核密度評估函數
density = kde(z.T) # 給定一個樣本點,計算該樣本點的密度
plt.scatter(z.T, density, marker = '.')
plt.show()
解題思路
hist函數用於描繪柱狀圖。stats.gaussian_kde() 用於構造一個多變量核密度評估函數,density = kde(z.T) 根據給定的一個樣本點,計算該樣本點的密度。
運行結果