#15-1
#1
x_values=[1,2,3,4,5]
y_values=[1,8,27,64,125]
plt.scatter(x_values,y_values,s=100)
plt.title("Square Numbers",fontsize=24) #title()给图标指定标题,fontsize指定了图标中文字的大小
plt.xlabel("Value",fontsize=14) #为每条轴设置标题
plt.ylabel("Square of Value",fontsize=14)
plt.show()
#2
x_values=list(range(1,5001))
y_values=[x**3 for x in x_values]
plt.scatter(x_values,y_values,s=40)
plt.title("Square Numbers",fontsize=24) #title()给图标指定标题,fontsize指定了图标中文字的大小
plt.xlabel("Value",fontsize=14) #为每条轴设置标题
plt.ylabel("Square of Value",fontsize=14)
plt.axis([0,5010,0,125000000000])#设置每个坐标轴的范围
plt.show()
image.png
#15-2
x_values=list(range(1,5001))
y_values=[x**3 for x in x_values]
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Reds,s=40)
plt.title("Square Numbers",fontsize=24) #title()给图标指定标题,fontsize指定了图标中文字的大小
plt.xlabel("Value",fontsize=14) #为每条轴设置标题
plt.ylabel("Square of Value",fontsize=14)
plt.axis([0,5010,0,125000000000])#设置每个坐标轴的范围
plt.show()
image.png
#15-3
import matplotlib.pyplot as plt
from random_walk import RandomWalk
#只要程序处于活动状态,就不断地模拟随机漫步
while True:
#创建一个RandomWalk实例,并将其包含的点都绘制出来
rw=RandomWalk()
rw.fill_walk()
plt.plot(rw.x_values,rw.y_values,linewidth=3)
plt.show()
keeping_running=input("Make another walk?(y/n): ")
if keeping_running=='n':
break
输出:
image.png
image.png
#决定前进方向以及沿这个方向前进的距离
x_direction=choice([1]) #要么向右走1,要么向左走的-1
x_distance=choice([0,1,2,3,4,5,6,7,8]) #随机地选择一个0~4之间的整数,沿指定方向走多远
x_step=x_direction*x_distance #移动方向乘以移动距离,以确定沿x和y轴移动的距离。x_step为正,将向右移动,为负向左,为零将垂直移动
y_direction=choice([1])
y_distance=choice([0,1,2,3,4,5,6,7,8])
y_step=y_direction*y_distance #y_step为正向上,为负向下,为零水平移动。
输出:
image.png
image.png image.png
def get_step(self):
#决定前进方向以及沿这个方向前进的距离
self.direction=choice([1,-1]) #要么向右走1,要么向左走的-1
self.distance=choice([0,1,2,3,4]) #随机地选择一个0~4之间的整数,沿指定方向走多远
self.step=self.direction * self.distance #移动方向乘以移动距离,以确定沿x和y轴移动的距离。x_step为正,将向右移动,为负向左,为零将垂直移动
return self.step
def fill_walk(self):
'''计算随机漫步包含的所有店'''
#不断漫步,直到列表达到指定的长度
while len(self.x_values)<self.num_points: #模拟四种漫步决定:向左还是向右走?沿指定的方向走多远?向上还是向下走?沿选定的方向走多远?
x_step=get_step(self)
y_step=get_step(self)
#拒绝原地踏步
if x_step==0 and y_step==0:
continue
输出:
image.png image.png
# hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] #将掷骰子的结果用作x轴的标签
lists=[]
for i in range(2,13):
lists.append(str(i))
hist.x_labels=lists
image.png
import pygal
from die import Die
#创建两个D6骰子
die_1=Die(8)
die_2=Die(8)
#掷骰子多次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
result=die_1.roll()+die_2.roll() #计算总点数
results.append(result)
print(results)
#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides #最大可能点数
for value in range(2,max_result+1):
frequency=results.count(value)
frequencies.append(frequency)
print(frequencies)
#对结果进行可视化
hist=pygal.Bar() #创建实例
hist.title="Results of rolling two D8 1000 times." #用于标示直方图的字符串
# hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] #将掷骰子的结果用作x轴的标签
lists=[]
for i in range(2,17):
lists.append(str(i))
hist.x_labels=lists
hist.x_title="Result" #给x轴添加标题
hist.y_title="Frequency of Result"
hist.add('D8+D8',frequencies) #用add()函数将一系列的值添加到图表中
hist.render_to_file('dice_visual.svg') #将图表渲染为一个SVG文件
输出:
image.png
image.png
import pygal
from die import Die
#创建三个D6骰子
die_1=Die()
die_2=Die()
die_3=Die()
#掷骰子多次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
result=die_1.roll()+die_2.roll()+die_3.roll() #计算总点数
results.append(result)
print(results)
#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides+die_3.num_sides #最大可能点数
for value in range(3,max_result+1):
frequency=results.count(value)
frequencies.append(frequency)
print(frequencies)
#对结果进行可视化
hist=pygal.Bar() #创建实例
hist.title="Results of rolling three D6 1000 times." #用于标示直方图的字符串
# hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] #将掷骰子的结果用作x轴的标签
lists=[]
for i in range(3,19):
lists.append(str(i))
hist.x_labels=lists
hist.x_title="Result" #给x轴添加标题
hist.y_title="Frequency of Result"
hist.add('D6+D6+D6',frequencies) #用add()函数将一系列的值添加到图表中
hist.render_to_file('dice_visual.svg') #将图表渲染为一个SVG文件
输出:
image.png
image.png
import pygal
from die import Die
#创建两个D6骰子
die_1=Die()
die_2=Die()
#掷骰子多次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
result=die_1.roll()*die_2.roll() #计算总点数
results.append(result)
print(results)
#分析结果
frequencies=[]
max_result=die_1.num_sides*die_2.num_sides #最大可能点数
for value in range(1,max_result+1):
frequency=results.count(value)
frequencies.append(frequency)
print(frequencies)
#对结果进行可视化
hist=pygal.Bar() #创建实例
hist.title="Multiply-Results of rolling two D6 1000 times." #用于标示直方图的字符串
# hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12'] #将掷骰子的结果用作x轴的标签
lists=[]
for i in range(1,37):
lists.append(str(i))
# lists.remove('7','11','13','14','17','19','21','22','23','26','27','28','29','31','32','33','34','35')
hist.x_labels=lists
hist.x_title="Result" #给x轴添加标题
hist.y_title="Frequency of Result"
hist.add('D6*D6',frequencies) #用add()函数将一系列的值添加到图表中
hist.render_to_file('dice_visual.svg') #将图表渲染为一个SVG文件
image.png
image.png
#15-10
#1、使用matplotlib通过可视化模拟掷骰子的情况
from die import Die
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
#创建两个骰子
die_1=Die()
die_2=Die(10)
#掷骰子多次骰子,并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
result=die_1.roll()+die_2.roll() #计算总点数
results.append(result)
print(results)
#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides #最大可能点数
X_Range=list(set(results)) #set无序、不可重复,list有序、可重复
for value in X_Range:
frequency=results.count(value)
frequencies.append(frequency)
plt.bar(X_Range,frequencies,color='Pink',align='center',label='D6+D10')
plt.xticks(X_Range)
plt.xlabel("Results",fontsize=8)
plt.ylabel("Frequencies",fontsize=8)
#图例
pink_patch=mpatches.Patch(color='Pink',label='D6+D10')
plt.legend(handles=[pink_patch])
plt.show()
输出:
image.png
#2、使用Pygal通过可视化来模拟随机漫步的情况
import pygal
from random_walk import RandomWalk
rw=RandomWalk(1000)
rw.fill_walk()
xy_chart = pygal.XY(stroke = False) #stroke=False散点不连线
xy_chart.title = 'RandomWalk'
pygal.Line(include_x_axis = False,include_y_axis = False)
#把生成的值变成坐标
xy_list = []
for (x,y) in zip(rw.x_values,rw.y_values):
xy_list.append((x,y))
xy_chart.add('data', xy_list)
xy_chart.render_to_file('RandomWalk.svg')
输出:
image.png
网友评论