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