《python编程从入门到实践》读书笔记与代码实现(二)——数据可视化(1)
2020-01-14 19:26
295 查看
笔记与代码实现
第十五章
#15.2绘制简单的折线图 import matplotlib.pyplot as plt #校正图形 #当你向plot()提供一系列数字时,它假设第一个数据点对应的x坐标值为0 input_values = [1,2,3,4,5] squares = [1,4,9,16,25] plt.plot(input_values, squares, linewidth=5)#绘制线条的粗细 #设置图表标题,并给坐标轴加上标签 plt.title("Square Numbers", fontsize=24)#图表的标题和字体大小 plt.xlabel("Value", fontsize=14) plt.ylabel("Square of Value", fontsize=14)#为每条轴设置标题并且设置标题字号大小 #设置刻度标记的大小 plt.tick_params(axis='both', labelsize=14)#设置刻度的样式 plt.show()
#使用scatter()绘制单个点并设置其样式 import matplotlib.pyplot as plt #绘制单个点并指定位置 plt.scatter(2, 4, s=200, c='red') #实参200设置了绘制图形时点的尺寸 #散点图中的各个点默认为蓝色点和黑色轮廓,edgecolor='none'将删除散点的轮廓 #c可以传入的值:RGB颜色模式自定义颜色,并将其设置为一个元组,(0, 0, 0.8) #其中包含三个0~1之间的小数值,它们分别表示红色、绿色和蓝色分量 #值越接近0,指定的颜色越深,值越接近1,指定的颜色越浅 #设置图表标题并给坐标轴加上标签 plt.title("Square Numbers", fontsize=24)#图表的标题和字体大小 plt.xlabel("Value", fontsize=14) plt.ylabel("Square of Value", fontsize=14)#为每条轴设置标题并且设置标题字号大小 #设置刻度标记的大小 plt.tick_params(axis='both', which= 'major', labelsize=14)#设置刻度的样式,which代表 #参数which的值为 ‘major’、’minor’、’both’,分别代表设置主刻度线、副刻度线以及同时设置,默认值为’major’ #(主刻度线、副刻度线类似于厘米尺。CM与MM的区别) plt.show()
#使用scatter()绘制一系列点 import matplotlib.pyplot as plt x_values = [1,2,3,4,5] y_values = [1,4,9,16,25] #使用颜色映射,它是一系列颜色,它们从起始颜色渐变到结束颜色,颜色映射用于突出数据的规律 plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues, s=100)#根据每个点的y值来设置其颜色 #设置图表标题并给坐标轴加上标签 plt.title("Square Numbers", fontsize=24)#图表的标题和字体大小 plt.xlabel("Value", fontsize=14) plt.ylabel("Square of Value", fontsize=14)#为每条轴设置标题并且设置标题字号大小 #设置刻度标记的大小 plt.tick_params(axis='both', which= 'major', labelsize=14)#设置刻度的样式,which代表 #plt.show() plt.savefig('squares_plot.png', bbox_inches='tight')#上述两个语句同时使用时,保存在本地的图片会成为空白 #第二个实参指定将图表多余的空白区域裁剪掉,如果要保留图表周围多余的空白区域,可省略这个实参
#自动计算数据 import matplotlib.pyplot as plt x_values = list(range(1,1001))#取值范围左闭右开 y_values = [x**2 for x in x_values] plt.scatter(x_values, y_values, s=40) #设置图表标题并给坐标轴加上标签 plt.title("Square Numbers", fontsize=24)#图表的标题和字体大小 plt.xlabel("Value", fontsize=14) plt.ylabel("Square of Value", fontsize=14)#为每条轴设置标题并且设置标题字号大小 #设置每个坐标轴的取值范围 plt.axis([0, 1100, 0, 1100000]) plt.show()
#15.3随机漫步 #随机漫步是这样行走得到的路径:每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的 #定义的类 # -*- coding: gbk -*- from random import choice#使用choice()来决定使用哪种选择 class RandomWalk(): """ 一个生成随机漫步数据的类 """ def __init__(self, num_points=5000):#我们将随机漫步包含的默认点数设置为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]) x_step = x_direction * x_distance y_direction = choice([1, -1]) y_distance = choice([0, 1, 2, 3, 4]) y_step = y_direction * y_distance # 拒绝原地踏步 if x_step == 0 and y_step == 0: continue # 计算下一个点的 x 和 y 值 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)
import matplotlib.pyplot as plt from random_walk import RandomWalk #只要程序处于活动状态,就不断地模拟随机漫步 while True: #创建一个RandomWalk实例,并将其包含的点都绘制出来 rw = RandomWalk()#当不传入实参时,该实例将使用num_points参数的默认值5000 rw.fill_walk() #设置绘图窗口的尺寸,以使绘图窗口更适合屏幕大小 #函数figure()用于指定图表的宽度、高度、分辨率和背景色 #Python假定屏幕分辨率为80像素/英寸,也可以将自己系统的分辨率传给dpi参数 plt.figure(figsize=(10, 6)) #plt.scatter(rw.x_values, rw.y_values, s=15)这句显示单纯,没有对随机漫步进行设置 #定制图表,以突出每次漫步的重要特征 point_numbers = list(range(rw.num_points)) #颜色深浅体现出这些点的绘制顺序 #plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues,edgecolor='none', s=1) #模拟分子运动 plt.plot(rw.x_values, rw.y_values, linewidth=1)#模拟分子运动 #突出起点 #plt.scatter(0, 0, c='green', s=100) #突出终点 #plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', s=100) #隐藏坐标轴 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.4使用Pygal模拟掷骰子 #使用Python可视化包Pygal来生成可缩放的矢量图形文件 #它们将自动缩放,以适合观看者的屏幕 import pygal from die import Die #创建两个D6骰子 die_1 = Die() die_2 = Die() #创建一个D6 #die = Die()#使用函数默认值 #掷几次骰子,并将结果存储在一个列表中 results = [] for roll_num in range(1000):#掷骰子次数 result = die_1.roll() + die_2.roll()#并将每次的结果放置在result中 results.append(result) #print(results) #分析计算 frequencies = [] #for value in range(1, die.num_sides+1): # frequency = results.count(value) # frequencies.append(frequency) #print(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) # 对结果进行可视化 #直方图直观地指出了各种结果出现的频率 hist = pygal.Bar() #为创建条形图,我们创建了一个pygal.Bar()实例,并将其存储在hist中 #hist.title = "Results of rolling one D6 1000 times." #hist.x_labels = ['1', '2', '3', '4', '5', '6'] #hist.x_title = "Result" #hist.y_title = "Frequency of Result" #hist.add('D6', frequencies) #将一系列值添加到图表中(向它传递要给添加的值指定的标签,还有一个列表,其中包含将出现在图表中的值 #hist.render_to_file('die_visual.svg')#这种文件的扩展名必须为 .svg hist.title = "Results of rolling two D6 dice 1000 times." hist.x_labels = ['2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'] hist.x_title = "Result" hist.y_title = "Frequency of Result" hist.add('D6 + D6', frequencies) hist.render_to_file('dice_visual.svg') #此例还可以同时投掷两个面数不同的骰子
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 《python编程从入门到实践》读书笔记与代码实现(二)——数据可视化(2)
- 《python编程从入门到实践》读书笔记与代码实现(二)——数据可视化(3)
- 对比《Python编程无师自通专业程序员的养成》PDF代码+《Python编程从入门到实践》PDF代码+《Python可以这样学》PDF代码分析...
- 随手小代码——《Python编程 从入门到实践》项目1:外星人入侵
- 【day 4】python编程:从入门到实践学习笔记-字典(末附练习答案代码)
- 【day 9】python编程:从入门到实践学习笔记-测试代码(末附练习答案代码)
- 《python编程:从入门到实践》读书笔记2---列表
- 【day 8】python编程:从入门到实践学习笔记-文件和异常(末附答案代码)
- 【Python编程:从入门到实践】第十一章:测试代码
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- ActiveMQ入门案例-生产者代码实现
- 《Python编程从入门到实践》_第六章_字典
- python编程:从入门到实践第3章
- 《Python编程 从入门到实践》第3章
- 《Python编程 从入门到实践》 PDF下载
- 《Python编程:从入门到实践》 练习 10-1 10-2
- 《Python编程——从入门到实践》第四章部分习题解
- spring-boot快速入门实践代码
- 《python编程:从入门到实践》学习笔记9(第10章文件和异常)
- 《Python编程从入门到实践》_第七章_用户输入和whlie循环