import matplotlib.pyplot as plt
#设置数值点
x= [1, 2, 3, 4, 5]
y=[1,4,9,16,25]
#画图
plt.plot(x,y)
# 用黑体显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
#标签
plt.title("折线图", fontsize=24)
plt.xlabel("X轴", fontsize=14)
plt.ylabel("Y轴", fontsize=14) # 设置刻度标记的大小
# 设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()
import matplotlib.pyplot as plt
x= [1, 2, 3, 4, 5]
y= [1, 4, 9, 16, 25]
#输入x,y数据,并s设置点的粗细
plt.scatter(x,y,s=100)
自动计算数据
import matplotlib.pyplot as plt
x = list(range(1, 1001))
y= [x**2 for x in x_values]
plt.scatter(x, y, s=40)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()
删除数据点的轮廓
#要删除数据点的轮廓,可在调用scatter() 时传递实参edgecolor='none'
plt.scatter(x, y, edgecolor='none', s=40)
自定义颜色
#要修改数据点的颜色,可向scatter() 传递参数c
plt.scatter(x, y, c='red', edgecolor='none', s=40)
#使用RGB颜色模式自定义颜色,它们分别表示红色、绿色和蓝色分量
plt.scatter(x, y, c=(0, 0, 0.8), edgecolor='none', s=40)
#值越接近0,指定的颜色越深,值越接近1,指定的颜色越浅。
使用颜色映射
将参数c 设置成了一个 y 值列表,并使用参数cmap 告诉pyplot 使用哪个颜色映射。这些代码将 y 值较小的点显示为浅蓝色,并将 y 值较大的点显示为深蓝色
x = list(range(1001))
y = [x**2 for x in x]
plt.scatter(x, y, c=y, cmap=plt.cm.Blues,edgecolor='none', s=40)
自动保存图表
将对plt.show() 的调用替换为对plt.savefig() 的调用
#将对plt.show() 的调用替换为对plt.savefig() 的调用
plt.savefig('plot.png', bbox_inches='tight')
第一个实参指定要以什么样的文件名保存图表,这个文件将存储到.py所在的目录中;
第二个实参指定将图表多余的空白区域裁剪掉。如果要保留图表周围多余的空 白区域。
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])
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)
用choice([1, -1]) 给x_direction 选择一个值,结果要么是表示向右走的1,要么是表示向左走的-1
choice([0, 1, 2, 3, 4]) 随机地 选择一个0~4之间的整数,告诉Python沿指定的方向走多远(x_distance )
如果x_step 为正,将向右移动,为负将向左移动,而为零将垂直移动;如果y_step 为正,就意 味着向上移动,为负意味着向下移动,而为零意味着水平移动。如果x_step 和y_step 都为零,则意味着原地踏步,我们拒绝这样的情况,接着执行下一次循环
为获取漫步中下一个点的 x 值,我们将x_step 与x_values 中的最后一个值相加
获得下一个点的 x 值和 y 值后,我们将它们分别附加到 列表x_values 和y_values 的末尾。
给点着色
加参数:c=point_numbers, cmap=plt.cm.Set3
重新绘制起点和终点
# 突出起点和终点
plt.scatter(0, 0, c='green', edgecolors='none', s=100)
plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none',
s=100)
隐藏坐标轴
# 隐藏坐标轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
增加点数
#创建一个RandomWalk实例,并将其包含的点都绘制出来
rw = RandomWalk(50000)
rw.fill_walk()
调整尺寸以适合屏幕
# 设置绘图窗口的尺寸
plt.figure(dpi=128,figsize=(10, 6))
import matplotlib.pyplot as plt
while True:
#创建一个RandomWalk实例,并将其包含的点都绘制出来
rw = RandomWalk(50000)
rw.fill_walk()
# 设置绘图窗口的尺寸
plt.figure(dpi=128,figsize=(10, 6))
# 绘制点并将图形显示出来
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Set3,
edgecolor='none', s=1)
# 隐藏坐标轴
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
# 突出起点和终点
plt.scatter(0, 0, c='green', edgecolors='none', s=100)
plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none',s=100)
plt.show()
keep_running = input("Make another walk? (y/n): ")
if keep_running == 'n':
break
from random import randint
import pygal
class Die():
"""表示一个骰子的类"""
def __init__(self, num_sides=6):
"""骰子默认为6面"""
self.num_sides = num_sides
def roll(self):
""""返回一个位于1和骰子面数之间的随机值"""
return randint(1, self.num_sides)
# 创建一个D6
die = Die()
# 掷几次骰子,并将结果存储在一个列表中
results = []
for roll_num in range(1000):
result = die.roll()
results.append(result)
# 分析结果
frequencies = []
for value in range(1, die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
print(frequencies)
# 对结果进行可视化
hist = pygal.Bar()
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')