用plotly模拟掷骰子,生成的直方图x和y轴数据都是对的,图也是对的,但是不知为何当鼠标移到柱子上时显示的数据标签数值不对。
经过研究发现并非数值不对,数值的逗号并非表示千位数,而是在逗号左边表示X坐标的值,右边为Y坐标的值。但这样看起来有歧义,会形成一个千位数。如何调整数值显示的方式呢?
plotly版本:5.9.0
代码如下:
die.py
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_visual.py
from plotly.graph_objs import Bar, Layout
from plotly import offline
from die import Die
# 创建一个D6。
die = Die()
# 掷几次骰子并将结果存储在一个列表中。
results = []
for roll_num in range(1000):
result = die.roll()
results.append(result)
# 分析结果。
frequencies = []
for value in range(1, die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
# 对结果进行可视化。
x_values = list(range(1, die.num_sides+1))
data = [Bar(x=x_values, y=frequencies)]
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')