You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现掷两个骰子总和动态可视化 遇ValueError问题求解

掷2个骰子点数和频率动态可视化修改方案

你遇到的ValueError: Grouper for not 1-dimensional错误主要来自两个核心问题:一是新版seaborn的sns.barplot()不再支持无关键字的位置参数传值,必须显式指定x、y参数;二是原有单骰子的计数、取值逻辑没有适配双骰子和的取值范围。

具体修改点

  • 调整取值范围:双骰子点数和区间为2~12,共11种可能结果,因此values改为list(range(2, 13)),计数列表frequencies初始化为11个0的列表
  • 修正掷骰子计数逻辑:每次生成两个1~6的随机数求和,对应计数索引为「点数和 - 2」(最小和为2,对应索引0)
  • 显式指定sns.barplot的参数:避免位置参数匹配错误
  • 修正坐标轴标题、x轴刻度逻辑适配双骰子场景

完整可运行代码

"""动态绘制2个骰子点数和的出现频率"""
from matplotlib import animation
import matplotlib.pyplot as plt
import random 
import seaborn as sns

def update(frame_number, rolls, faces, frequencies):
    """每一帧动画的柱状图更新逻辑"""
    # 掷骰子并更新频率计数
    for i in range(rolls):
        dice1 = random.randrange(1, 7)
        dice2 = random.randrange(1, 7)
        sum_val = dice1 + dice2
        frequencies[sum_val - 2] += 1

    # 清空旧图并绘制新的柱状图
    plt.cla()
    # 显式指定x和y参数,避免位置参数报错
    axes = sns.barplot(x=frequencies, y=faces, palette='bright', orient='horizontal')
    axes.set_title(f'2个骰子点数和频率统计,总掷出次数:{sum(frequencies):,}次')
    axes.set(xlabel='出现次数', ylabel='骰子点数和')
    # x轴最大刻度比最高频率多10%,留出显示文本的空间
    axes.set_xlim(right=max(frequencies) * 1.10 if max(frequencies) >0 else 10)

    # 在每个条形右侧显示次数和占比
    for bar, frequency in zip(axes.patches, frequencies):
        text_x = bar.get_width()
        text_y = bar.get_y() + bar.get_height() / 2.0
        text = f'{frequency:,}\n{frequency / sum(frequencies):.3%}' if sum(frequencies) >0 else "0\n0.000%"
        axes.text(text_x, text_y, text, ha='left', va='center')

# 动画参数配置
number_of_frames = 200  # 总动画帧数
rolls_per_frame = 100   # 每帧新增掷骰子次数

sns.set_style('whitegrid')
figure = plt.figure('掷2个六面骰子频率统计')
values = list(range(2, 13))  # y轴显示的点数和区间2~12
frequencies = [0] * 11       # 11个取值对应的初始计数

# 启动动画
die_animation = animation.FuncAnimation(
    figure, update, repeat=False, frames=number_of_frames, interval=33,
    fargs=(rolls_per_frame, values, frequencies))

plt.show()

内容的提问来源于stack exchange,提问作者user12881277

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:39:03