生成数据作业习题

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')

猜你喜欢

转载自blog.csdn.net/shinhwa96/article/details/84722716