安装 Matplotlib
pip install matplotlib
15.1 绘制简单的折线图
import matplotlib.pyplotas plt
#绘制折线图的数据
squares = [1,4,19,26,35]
fig,ax = plt.subplots()
ax.plot(squares)
plt.show()
15.1.1 修改标签文字和线条粗细
import matplotlib.pyplotas plt
#绘制折线图的数据
squares = [1,4,9,16,25]
fig,ax = plt.subplots()
ax.plot(squares, linewidth=3)
#设置图表标题并给坐标轴加上标签
ax.set_title("平方数",fontsize=24)
ax.set_xlabel("值",fontsize=14)
ax.set_ylabel("值的平方",fontsize=14)
#设置字体
plt.rcParams['font.sans-serif']=['SimHei']#显示中文标签
plt.rcParams['axes.unicode_minus']=False
ax.tick_params(axis='both',labelsize=14)
plt.show()
15.1.2 查看 matplotlib 内置样式
>>> import matplotlib.pyplot as plt
>>> plt.style.available
样式使用:plt.style.use ('seaborn')
15.1.3 使用scatter()绘制散点图并设置样式
import matplotlib.pyplotas plt
plt.style.use('seaborn')
fig,ax = plt.subplots()
ax.scatter(2,4)
plt.show()
15.1.4 绘制 1000个点
#使用 scatter() 绘制散点图并设置样式
import matplotlib.pyplotas plt
x_values =range(1,1001)
y_values = [x**2 for xin x_values]
plt.style.use('seaborn')
fig,ax = plt.subplots()
ax.scatter(x_values,y_values,s=10)
#设置图表标题并给坐标轴加上标签
ax.set_title("平方数",fontsize =24)
ax.set_xlabel("值",fontsize =14)
ax.set_ylabel("值的平方",fontsize =14)
#设置字体
plt.rcParams['font.sans-serif']=['SimHei']#显示中文标签
plt.rcParams['axes.unicode_minus']=False
#设置刻度标记的大小
ax.tick_params(axis='both',which='major',labelsize =14)
ax.axis([0,1100,0,1100000])
plt.show()
15.1.5 设置颜色
ax.scatter(x_values,y_values,c='red',s=10)
ax.scatter(x_values,y_values,c=(0,0.8,0),s=10)
15.1.6 使用颜色映射
ax.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,s=10)
15.1.7 自动保存图表
plt.savefig('squares_plot.png',bbox_inches ='tight')
15.2 绘制随机漫步图
import matplotlib.pyplotas plt
from RandomWalk import RandomWalk
#创建一个RandomWalk 实例
rw = RandomWalk()
rw.fill_walk()
#将所有的点都绘制出来
plt.style.use('classic')
fig,ax = plt.subplots()
ax.scatter(rw.x_values,rw.y_values,s=15)
plt.show()
15.3 将所有的点都绘制出来
import matplotlib.pyplotas plt
from RandomWalkimport RandomWalk
while True:
rw = RandomWalk()
rw.fill_walk()
#将所有的点都绘制出来
plt.style.use('classic')
fig,ax = plt.subplots(figsize=(15,9))
ax.scatter(rw.x_values,rw.y_values)
plt.show()
keep_running =input("Make another walk?(y/n)")
if keep_running =='n':
break
15.4 使用Plotly模拟掷骰子
安装plotly
pip install plotly
15.5 掷骰子
创建 Die类
from randomimport randint
class Die:
def __init__(self,num_sides=6):
#骰子默认为6面
self.num_sides = num_sides
def roll(self):
#返回一个位于1和骰子面数之间的随机值
return randint(1,self.num_sides)
分析结果并绘制直方图
from Dieimport Die
from plotlyimport offline
from plotly.graph_objsimport Bar,Layout
#创建一个D6
die = Die()
print(die.num_sides)
#掷几次骰子并将结果存储在一个列表中
results = []
for roll_numin range(100):
result = die.roll()
results.append(result)
#分析结果
frequencies = []
for valuein range(1,die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
x_values =list(range(1,die.num_sides +1))
data = [Bar(x=x_values,y=frequencies)]
x_axis_config = {'title':'结果'}
y_axis_config = {'title':'结果的频率'}
my_layout = Layout(title='掷一个D6 1000次的结果',xaxis=x_axis_config,yaxis=y_axis_config)
offline.plot({'data':data,'layout':my_layout},filename='d6.html')
15.6 同时掷两个骰子
from Dieimport Die
from plotlyimport offline
from plotly.graph_objsimport Bar,Layout
'''
同时掷两个骰子
'''
#创建一个D6
die = Die()
die1 = Die()
#掷几次骰子并将结果存储在一个列表中
results = []
for roll_numin range(100):
result = die.roll()+die1.roll()
results.append(result)
#分析结果
frequencies = []
max_result = die.num_sides + die1.num_sides
for valuein range(1,die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
x_values =list(range(2,max_result +1))
data = [Bar(x=x_values,y=frequencies)]
x_axis_config = {'title':'结果','dtick':1}
y_axis_config = {'title':'结果的频率'}
my_layout = Layout(title='掷两个D6 1000次的结果',xaxis=x_axis_config,yaxis=y_axis_config)
offline.plot({'data':data,'layout':my_layout},filename='d6.html')