• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

  • 博客园
  • 联系
  • 订阅
  • 管理

View Post

[Data Visualization] 使用Python Plotly库实现掷2个骰子结果之和的直方图绘制

一、内容实现概述

本文主要讲述使用Python的Plotly绘图库绘制掷2个6面骰子多次后其结果之和的直方图结果

Matplot绘制过程如下:

    1. 导入random库、plotly库以及绘制直方图的Bar()方法
    2. 两次同时调用random库的randint()随机方法在1-6的整数中随机取一个值,并记录每两次随机值之和的结果(本实现对投掷结果进行了类封装)
    3. 统计2个骰子点数之和,即2-12点出现的频次
    4. 调用库的Bar()方法传入2个6面骰子投掷点数之和的结果,并进行直方图绘制
    5. 调用库的plot()方法,进行展示

注:

    • 在Python中使用(导入)Plotly绘图库时,需要先安装,本实现使用的是pip命令安装。pip install plotly 
    • Plotly教程

 

二、代码实现

注:源代码地址

 Dice骰子类

from random import randint

class Dice:
    """表示一个骰子类"""

    def __init__(self, side=6):
        self.side = side
        
    def roll(self):
        return randint(1, self.side)

 

 

# 主题:绘制同时掷两个6面骰子的直方图

from dice import Dice
from plotly.graph_objs import Bar, Layout
from plotly import offline
import plotly.express as px


# 第一步:记录每次掷骰子的结果
dice_instance_1 = Dice()
dice_instance_2 = Dice()

roll_dice_times = 100
roll_dice_result = []
dice_frequency = []

# 同时投掷两个6面的骰子100次
for i in range(roll_dice_times):
    result = dice_instance_1.roll() + dice_instance_2.roll()
    roll_dice_result.append(result)

# 统计2-12点出现的次数
max_points = dice_instance_1.side + dice_instance_2.side
for points in range(2, max_points + 1):
    frequency = roll_dice_result.count(points)
    dice_frequency.append(frequency)

# 第二步:将掷骰子的所有结果用直方图表示
## 第一种实现方式
x_values = list(range(2, max_points + 1))
data = [Bar(x=x_values, y=dice_frequency)]

x_axis_config = {'title': "面数"}
y_axis_config = {'title': "面数出现的次数"}

layoutObj = Layout(title="同时掷两个6面骰子100次的结果分布情况",
    xaxis = x_axis_config, yaxis = y_axis_config)
figure = {'data': data, 'layout': layoutObj}
offline.plot(figure, filename='two_6_side_dice.html')

## 第二种实现方式
fig = px.bar(x=x_values, y=dice_frequency)
fig.show()

 

 

三、运行结果

第一种实现方式的结果

 

 

第二种实现方式的结果

 

posted on 2025-01-15 17:05  tony-cao  阅读(26)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3