# 使用plotly模拟投掷骰子
from random import randint
class Die:
# 创建一个骰子的类
def __init__(self, num_sides=6):
# 骰子默认面数是6
self.num_sides = num_sides
def roll(self):
# 返回有个1和骰子面数的随机值
return randint(1, self.num_sides)
'''创建骰子实例die'''
die = Die() # 骰子面数默认为6
results = []
for roll_nums in range(1000):
result = die.roll()
results.append(result)
'''统计好投掷结果和频数后即可用plotly库绘制直方图'''
from plotly.graph_objs import Bar, Layout
from plotly import offline
frequencies = [] # 建立空列表,统计每一面点数出现的次数
for nums in range(1, die.num_sides + 1):
frequency = results.count(nums)
frequencies.append(frequency)
x_values = list(range(1, die.num_sides + 1))
data = [Bar(x=x_values, y=frequencies, text=frequencies, textposition='outside')]
x_axis_config = {'title': '结果'}
y_axis_config = {'title': '结果的频率'}
my_layout = Layout(title='投掷一个D6_1000次的结果', xaxis=x_axis_config, yaxis=y_axis_config)
# 布局对象
offline.plot({'data': data, 'layout': my_layout}, filename='d6.html')
学习plotly做数据可视化的时候,遇到这个骰子绘图的有两个问题想请教一下各位,第一个问题是:创建data = [Bar(x=x_values, y=frequencies, text=frequencies, textposition='outside')]的时候,为什么需要用方括号来把Bar()包起来,第二个问题是Bar()里面有需要接受哪些必须的参数呢?感激不尽