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) 根据给定的一个样本点,计算该样本点的密度。
运行结果