Python数据可视化(三)熟悉 Plotly

        Plotly 生成的图形可以自动缩放,以适应观看者的屏幕。Plotly 生成的图形还是交互式的:当用户将鼠标指向特定的元素时,将显示有关该元素的信息。

一、安装 Plotly

打开终端,输入一下命令:

python -m pip install --user plotly

python -m pip install --user pandas

# pandas 是一个用于高效地处理数据的库
# plotly 依赖于 pandas

⚠️注意:如果没有配置国内的镜像地址,下载会非常的慢,建议配置一下(见附录

二、创建一个类 — 骰子

from random import randint


class Die:
    """骰子类"""
    def __init__(self, num_sides=6):
        """6面"""
        self.num_sides = num_sides

    def roll(self):
        return randint(1, self.num_sides)

三、创建一个实例

from dice import Dice
# 创建一个 D6
dice = Dice()
# 结果存储在一个列表中
results = []

for roll_num in range(1000):
    result = dice.roll()
    results.append(result)

frequencies = []
poss_results = range(1, dice.num_sides+1)
for value in poss_results:
    frequency = results.count(value)
    frequencies.append(frequency)

print(frequencies)

        创建一个 Dice 实例,其面数为默认值 6 。然后掷骰子 1000 次,并将每次的结果都存储在列表。创建空列表 frequencies,用于存储每个点数出现的次数。

输出结果:

[144, 190, 170, 164, 184, 148]

四、绘制直方图

from dice import Dice
import plotly.express as px

# 创建一个 D6
dice = Dice()
# 结果存储在一个列表中
results = []

for roll_num in range(1000):
    result = dice.roll()
    results.append(result)

frequencies = []
poss_results = range(1, dice.num_sides+1)
for value in poss_results:
    frequency = results.count(value)
    frequencies.append(frequency)

print(frequencies)
# 结果可视化
fig = px.bar(x=poss_results, y=frequencies)
fig.show()

运行时,你可能会报错,如下:提示我们需要安装 numpy

ImportError: Plotly Express requires numpy to be installed. You can install numpy using pip with:

执行命令:

pip install numpy

结果输出:

再修改点东西:

--省略--

# 结果可视化
title = "1000 次运行结果"
labels = {'x': '面值', 'y': '出现次数'}
fig = px.bar(x=poss_results, y=frequencies, title=title, labels=labels)

fig.show()

输出结果:

五、两个🎲会怎样呢

from dice import Dice
import plotly.express as px

# 创建一个 D6
dice_1 = Dice()
dice_2 = Dice()
# 结果存储在一个列表中
results = []

for roll_num in range(1000):
    result = dice_1.roll() + dice_2.roll()
    results.append(result)

frequencies = []
max_result = dice_1.num_sides + dice_2.num_sides
poss_results = range(2, max_result+1)
for value in poss_results:
    frequency = results.count(value)
    frequencies.append(frequency)

print(frequencies)
# 结果可视化
title = "两个🎲1000 次运行结果"
labels = {'x': '面值', 'y': '出现次数'}
fig = px.bar(x=poss_results, y=frequencies, title=title, labels=labels)
fig.show()

        可能出现的最小总点数为两个骰子的最小可能点数之和(2),可能出现的最大总点数为两个骰子的最大可能点数之和(12)。

输出结果:

        Plotly 提供了 update_layout() 方法,可用来对创建的图形做各种修改。

fig.update_layout(xaxis_dtick=1)

       对表示整张图的 fig 对象调用 update_layout() 方法。这里传递了参数 xaxis_dtick,它指定 x 轴上刻度标记的间距。我们将这个间距设置为1,给每个条形都加上标签。

        要将图形保存为 HTML 文件,可将 fig.show() 替换为 fig.write_html():

fig.write_html('dice_visual01.html')

        write_html() 方法接受一个参数:要写入的文件的名称。如果只提供文件名,这个文件将被保存到 .py 文件所在的目录中。可传递 Path 对象。

附录

见:附录https://blog.csdn.net/Lin_Coder_/article/details/145966883?spm=1001.2014.3001.5502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值