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

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

View Post

[Data Visualization] 使用Python Plotly库实现掷1个骰子的直方图绘制

 一、内容实现概述

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

Matplot绘制过程如下:

  1. 导入random库、plotly库以及绘制直方图的Bar()方法
  2. 调用random库的randint()随机方法在1-6的整数中随机取一个值,并记录每次随机值的结果(本实现对投掷结果进行了类封装)
  3. 统计1-6点出现的频次
  4. 调用库的Bar()方法传入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面骰子100次的直方图

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

# 第一步:记录每次掷骰子的结果
dice_instance = Dice()
roll_dice_times = 100
roll_dice_result = []
dice_frequency = []

## 投掷一个6面的骰子100次
for i in range(roll_dice_times):
    result = dice_instance.roll()
    roll_dice_result.append(result)

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

# 第二步:将掷骰子的所有结果用直方图表示
## 第一种实现方式
x_values = list(range(1, dice_instance.side + 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='one_6_side_dice.html')

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

 

 

三、运行结果

 第一种实现方式的结果

 

 

第二种实现方式的结果

 

posted on 2025-01-15 16:31  tony-cao  阅读(38)  评论(0)    收藏  举报

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