爬虫学习笔记7——使用matplotlib和pygal进行数据分析及可视化

1.绘制简单的折线图

#plot()绘制折线图
import matplotlib.pyplot as plt

input_values=[1,2,3,4,5]
squares = [1,4,9,16,25]
#plot方法默认X轴是从0开始的,因此有时要给它提供输入值,输出值两个参数
plt.plot(input_values,squares,linewidth=5)#linewidth决定了绘制线条的粗细

plt.title("Square Number",fontsize=24)#fontsize指定了图中文字的大小

plt.xlabel("value",fontsize=14)
plt.ylabel("Square of value",fontsize=14)
plt.tick_params(axis='both',labelsize=14)#labelsize指定了刻度数字的大小


plt.show()

2.绘制简单的散点图

#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,s=100)#s为size,指定了点的尺寸
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)

plt.show()

3.自动计算数据并绘制

#自动计算数据
import matplotlib.pyplot as plt

x_values = list(range(1,101))
y_values = [x**2 for x in x_values]

#还可以设置点的轮廓颜色,默认无轮廓;c用来设置点的颜色
#也可以用RGB颜色模式传入参数,c=(0,0,0.8)三个参数均为0-1的小数值
plt.scatter(x_values,y_values,c='green',edgecolor='none',s=20)
'''
'''
#颜色映射,根据数据的变化来设置变化的颜色,突出数据的规律;
#cmap=plt.cm.Blues告诉了pyplot使用这个映射
plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,s=20)
plt.title("Square Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square Of Value",fontsize=14)
#设置坐标轴的取值范围
plt.axis([0,110,0,11000])
#plt.show()

#自动保存图表,第二个参数使保存的图表减裁掉空白区域,如果不需要,可是省略
#如果前面使用了plt.show(),保存的图片将是一个空白
plt.savefig('squares_plot.png',bbox_inches='tight')

4.散点图应用——随机漫步创建一个漫步类

from random import choice

class RandomWalk():
	"""一个生成随机漫步数的类"""
	
	def __init__(self,num_points=5000):
		"""初始化随机漫步的属性"""
		self.num_points = num_points
		
		#所有随机漫步都始于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 == 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()
	rw.fill_walk()
	
	#调整尺寸和分辨率
	plt.figure(dpi=300,figsize=(10,6))
	
	point_numbers = list(range(rw.num_points))
	plt.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap = plt.cm.Blues,s=15)
	
	#重绘起点和中点
	plt.scatter(0,0,c='yellow',s=50)
	plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',s=50)
	
	#隐藏坐标轴
	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 

二,模拟掷骰子,并用pygal制成直方图

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)
		
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)
	
import pygal

hist = pygal.Bar()
hist.title = "Results of rolling two of D6 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('die_visual_1.svg')

你可能感兴趣的:(爬虫学习笔记)