当前位置: 首页 > news >正文

使用python绘制现有彩票记录走势图

在数据分析和可视化的领域中,彩票走势图是一个经典的例子,它可以展示彩票数字随时间的出现频率和趋势。这里使用英国使用EuroMillions彩票的历史数据作为示例,使用Python和Matplotlib库来创建一个简单的走势图。可以在以下网站搜索.csv文件。 

EuroMillions draw history | Results | The National Lottery (national-lottery.co.uk)

数据准备

CSV文件中,需要用到以下列:

  • DrawNumber: 抽奖编号
  • Ball 1Ball 5: 从数字1到50中,每次抽取的五个主要号码
  • Lucky Star 1Lucky Star 2: 从数字1到12中,每次抽取的两个幸运星号码

一注彩票包含5个主要号码和2个Lucky star号码 

加载这个CSV文件可以通过Pandas库中的read_csv函数完成。

import pandas as pd# 加载CSV文件
euromillions_data = pd.read_csv('euro.csv')

数据排序 

按照 DrawNumber 从最新到最早的顺序排序。

# 按照 DrawNumber 排序
euromillions_data_sorted = euromillions_data.sort_values('DrawNumber', ascending=False)

创建图表 

将每个号码作为一个点绘制在图表上。

import matplotlib.pyplot as plt# 创建一个新的图表和坐标轴对象
fig, ax = plt.subplots(figsize=(20, len(euromillions_data_sorted) / 2))

绘制号码

主要号码用蓝色显示,幸运星号码用红色显示。

# 绘制号码
for index, row in euromillions_data_sorted.iterrows():# 绘制主要号码for i in range(1, 6):ax.text(row[f'Ball {i}'], row['DrawNumber'], str(row[f'Ball {i}']), va='center', ha='center', color='blue')# 绘制幸运星号码for i in range(1, 3):ax.text(50 + row[f'Lucky Star {i}'], row['DrawNumber'], str(row[f'Lucky Star {i}']), va='center', ha='center', color='red')

设置图表属性 

设置图表的轴限制、网格线、标签、以及移除多余的轴刻度。

# 设置轴限制
ax.set_xlim(0, total_balls + total_luckystars)
ax.set_ylim(euromillions_data_sorted['DrawNumber'].min() - 1, euromillions_data_sorted['DrawNumber'].max() + 1)# 添加网格线和轴标签
ax.grid(True)
ax.set_xlabel('Numbers')
ax.set_ylabel('Draw Number')# 移除轴刻度
ax.tick_params(axis='both', which='both', length=0)# 隐藏轴边框
for spine in ax.spines.values():spine.set_visible(False)

分离主号码和幸运星号码 

将主号码和幸运星号码之间添加一条分隔线,以使图表更加清晰。 

plt.axvline(x=50.5, color='black', linestyle='--')

展示图表

plt.show()

最后成果:

走势图
http://www.lryc.cn/news/257228.html

相关文章:

  • Kubernetes实战(十)-升级k8s集群
  • 点击el-tree小三角后去除点击后的高亮背景样式,el-tree样式修改
  • 【电子取证篇】汽车取证数据提取与汽车取证实例浅析(附标准下载)
  • 系列学习前端之第 3 章:一文精通 css
  • 基于JavaWeb+SSM+Vue马拉松报名系统微信小程序的设计和实现
  • leetcode 255.用队列实现栈
  • 排序算法---选择排序
  • 物联网IC
  • 2022年第十一届数学建模国际赛小美赛A题翼龙如何飞行解题全过程文档及程序
  • Blender学习--制作带骨骼动画的机器人
  • 单片机学习13——串口通信
  • Unity 实现单例模式
  • 【Android12】Android Framework系列--AMS启动Activity分析
  • Hive的几种排序方式、区别,使用场景
  • 设计模式-外观模式
  • Kubernetes实战(九)-kubeadm安装k8s集群
  • 【HarmonyOS开发】拖拽动画的实现
  • 提高问卷填写率的策略与方法
  • 软件工程考试复习
  • PHP基础 - 类型比较
  • 张正友相机标定法原理与实现
  • 【LeetCode】2723. 两个 Promise 对象相加
  • 设计模式--命令模式的简单例子
  • 排序算法之六:快速排序(非递归)
  • 【概率方法】重要性采样
  • MyBatis 四大核心组件之 StatementHandler 源码解析
  • 用Guava做本地缓存示例
  • Django多对多ManyToManyField字段
  • docker-centos中基于keepalived+niginx模拟主从热备完整过程
  • 软件科技成果鉴定测试需提供哪些材料?