当前位置:网站首页>将列表分箱,并通过Pyechart绘制柱状图

将列表分箱,并通过Pyechart绘制柱状图

2022-06-22 00:46:00 呆萌的代Ma

用matplotlib可以一步到位,但是用pyechart时:

  1. 需要手动分箱并绘图,分箱的方法使用的是:pd.cut(array, bins)
  2. 统计x对应的下标与y轴对应的频数,将数据统计好后,给def plot_bar()进行绘制

示例代码如下:

示例代码

import numpy as np
import pandas as pd


def plot_bar(bar_index, value_list):
    """绘制柱状图 :param bar_index: x轴的下标 :param value_list: y轴的值 """
    from pyecharts import options as opts
    from pyecharts.charts import Bar
    bar = Bar()
    bar.add_xaxis(bar_index)
    bar.add_yaxis("", value_list)
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="柱状图"),
        yaxis_opts=opts.AxisOpts(name="X轴"),
        xaxis_opts=opts.AxisOpts(name="Y轴"),
        datazoom_opts=opts.DataZoomOpts(type_="slider", is_realtime=True, range_start=0, range_end=100),
    )
    bar.set_series_opts(
        label_opts=opts.LabelOpts(is_show=False),
        markline_opts=opts.MarkLineOpts(
            data=[
                opts.MarkLineItem(type_="max", name="最大值"),
                opts.MarkLineItem(type_="average", name="平均值"),
            ]
        ),

    ).render("bar_chart_display_delay.html")


def plot_result(array, bins=20):
    """准备转换数据 :param array: 待绘制的数组 :param bins: 柱状图柱子的数量 """
    # 开始准备数据,准备绘图
    num_list = []  # 记录每个bins的数量
    index_list = []  # 记录下标
    value_dis_bins = pd.cut(array, bins=bins)  # 数据分箱
    for i in range(bins):
        bin_code = np.argwhere(value_dis_bins.codes == i).flatten()
        num_list.append(len(bin_code))
        index_list.append(((value_dis_bins.categories[i].left + value_dis_bins.categories[i].right) / 2).round(5))
    plot_bar(index_list, num_list)


plot_result(array=np.random.random(size=200))

效果如下所示:
在这里插入图片描述

原网站

版权声明
本文为[呆萌的代Ma]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_35757704/article/details/125393763