15-1:数字的三次方称其立方,绘制一个图形,显示前5个整数的立方,在绘制一个显示前5000个整数的立方值
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y=[1,8,27,64,125]
plt.scatter(x,y,s=5)
plt.title('cube numbers',fontsize=24)
plt.xlabel("value",fontsize=10)
plt.ylabel("cube",fontsize=10)
plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import matplotlib.pyplot as plt
x=list(range(1,5001))
y=[dd**3 for dd in x]
plt.scatter(x,y,s=5)
plt.title('cube numbers',fontsize=24)
plt.xlabel("value",fontsize=10)
plt.ylabel("cube",fontsize=10)
plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()
15-2:彩色立方:添加颜色映射
添加绿色:
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import matplotlib.pyplot as plt
x=list(range(1,5001))
y=[dd**3 for dd in x]
plt.scatter(x,y,c=y,cmap=plt.cm.Greens,s=5)
plt.title('cube numbers',fontsize=24)
plt.xlabel("value",fontsize=10)
plt.ylabel("cube",fontsize=10)
plt.tick_params(axis='both',which='major',labelsize=14)
plt.show()
15-3:分子运动,将散点换为线条图
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
#随机漫步类
from random import choice
class RandomWalk():
def __init__(self,num_points=5000):
self.num_points=num_points
#所有的随机漫步始于(0,0)
self.x_values=[0]
self.y_values=[0]
def fill_walk(self): #计算随机漫步的所有的点
#决定前进方向以及前进距离
while len(self.x_values)<self.num_points:
x_direction=choice([1,-1])
x_distance=choice([0,1,2,3,4,5])
x_step=x_direction*x_distance
y_direction=choice([1,-1])
y_distance=choice([0,1,2,3,4,5])
y_step=y_direction*y_distance
#拒绝原地踏步
if x_step==0 and y_step==0:
continue
#计算下一个点的坐标值
next_x=self.x_values[-1]+x_step
next_y=self.y_values[-1]+y_step
self.x_values.append(next_x)
self.y_values.append(next_y)
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
import matplotlib.pyplot as plt
from randomwalk import RandomWalk
while True:
rw=RandomWalk()
rw.fill_walk()
#调整屏幕大小
plt.figure(figsize=(10,6))
point_numbers=list(range(rw.num_points))
plt.plot(rw.x_values,rw.y_values,linewidth=1)
#隐藏坐标轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
plt.show()
keep_running=input("make another walk?(y/n):")
if keep_running=='n':
break
15-6 自动生成标签:修改die.py/dice——visual.py将设置hist.x_labels值饿列表替换成自动生成的这种列表的循环,
15-7:两个D8的骰子
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from random import randint
class Die():
def __init__(self,num_sides=6):
self.num_sides=num_sides
def roll(self):
return randint(1,self.num_sides)
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from die import Die
import pygal
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 D8+D8 1000 times.'
hist.x_labels=[str(dd) for dd in range(2,max_result+1)]
hist.x_title="Results"
hist.y_title="frequencies of results"
hist.add('D8+D8',frequencies)
hist.render_to_file('dice_visual.svg')
结果:
15-8:同时扔三个D6骰子,可视化处理结果数据
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from die import Die
import pygal
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)
#分析结果
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)
#对结果进行可视化处理
hist=pygal.Bar()
hist.title='Results of rolling D6+D6+D6 1000 times.'
hist.x_labels=[str(dd) for dd in range(3,max_result+1)]
hist.x_title="Results"
hist.y_title="frequencies of results"
hist.add('D6+D6+D6',frequencies)
hist.render_to_file('dice_visual.svg')
15-9:将点数相乘,可视化处理结果
#-*-coding:GBK-*-
#-*-coding:utf-8-*-
from die import Die
import pygal
die_1=Die()
die_2=Die()
results=[]
for roll_num in range(1000):
result=die_1.roll()*die_2.roll()
results.append(result)
#分析结果
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)
#对结果进行可视化处理
hist=pygal.Bar()
hist.title='Results of rolling D6*D6 1000 times.'
hist.x_labels=[str(dd) for dd in range(1,max_result+1)]
hist.x_title="Results"
hist.y_title="frequencies of results"
hist.add('D6*D6',frequencies)
hist.render_to_file('dice_visual.svg')