def make_hot_plot(data, p_id):
    """
    根据评价最近评价来判断这个产品是否是热门
    :param datas:
    :return:
    """
    if data:
        data = data.split(",")
        dt1 = datetime.datetime.now()
        temp = list(set(data))
        sub_dates = [(dt1 - datetime.datetime.strptime(dt, '%Y-%m-%d')).days
                     for dt in temp]
        actives = []
        for d in sub_dates:
            if d <= 360:
                actives.append(100)
            elif 360 < d <= 500:
                actives.append(60)
            else:
                actives.append(0)

        date_dict = {'sub_date': sub_dates, 'active': actives}
        df = pd.DataFrame(date_dict, index=temp)
        df.plot(subplots=True)
        plt.savefig("static/upload/%s_h.png" % p_id, dpi=90)
        return file_hepler.get_image_path("%s_h.png" % p_id)
    else:
        return file_hepler.get_image_path("no_hot.png")
Example #2
0
def make_hot_bokeh(data):
    from bokeh.models import BoxAnnotation
    if data:
        data = data.split(",")
        dt1 = datetime.datetime.now()
        temp = list(set(data))
        sub_dates = [(dt1 - datetime.datetime.strptime(dt, '%Y-%m-%d')).days
                     for dt in temp]

        s = pd.Series(
            sub_dates,
            [datetime.datetime.strptime(dt, '%Y-%m-%d') for dt in temp])
        s = s.sort_index(ascending=False)

        p = figure(x_axis_type="datetime",
                   tools="",
                   title="热度",
                   x_axis_label='日期',
                   y_axis_label='天数',
                   width=400,
                   height=400)

        p.line(s.index, s.values, legend="距离当前天数", line_width=2)

        script, div = components(p, CDN)

        return [script, div]
    else:
        return [0, file_hepler.get_image_path("no_hot.png")]
def make_overview_plot(data, p_id):
    """
    评价概览
    :param datas:
    :return:
    """
    if data:
        temps = "".join(data)
        values = re.findall(r'(\d+)', temps)
        c_values = [int(value) for value in values]
        c_keys = re.findall('[\u4e00-\u9fa5]+', temps)
        s = pd.Series(c_values, index=c_keys)
        s.plot.bar(figsize=(6, 8), fontsize=8)

        plt.savefig("static/upload/%s_o.png" % p_id, dpi=90)
        plt.close()
        return file_hepler.get_image_path("%s_o.png" % p_id)
    else:
        return file_hepler.get_image_path("no_overview.png")
def make_comment_plot(data, p_id):
    """
    生成好评率的饼图
    :param datas:
    :return:
    """
    if data:
        temps = "".join(data).replace(" ", "").replace("\r\n", "")
        values = re.findall(r'(\d+)', temps)
        c_values = [int(value) for value in values]
        c_keys = re.findall('[\u4e00-\u9fa5]+', temps)
        print(c_keys)
        s = pd.Series(c_values, index=c_keys, name='好评率')
        s = s[3:6]
        s_sum = s.sum()
        s = s.apply(lambda x: x / s_sum)
        s.plot.pie(autopct='%0.2f%%', fontsize=8, colors=['g', 'y', 'r'])
        plt.savefig("static/upload/%s_c.png" % p_id, dpi=90)
        plt.close()

        return file_hepler.get_image_path("%s_c.png" % p_id)
    else:
        return file_hepler.get_image_path("no_good_comments.png")
Example #5
0
def make_overview_bokeh(data):
    if data:
        temps = "".join(data)
        values = re.findall(r'(\d+)', temps)
        c_values = [int(value) for value in values]
        c_keys = re.findall('[\u4e00-\u9fa5]+', temps)
        s = pd.Series(c_values, index=c_keys)
        data = s
        # 创建一个新的含有标题和轴标签的窗口在线窗口
        p = Bar(data,
                title="总览图",
                ylabel='关键字数量',
                width=400,
                height=400,
                legend=None,
                tools="")
        script, div = components(p, CDN)

        return [script, div]
    else:
        return [0, file_hepler.get_image_path("no_overview.png")]
Example #6
0
def make_commment_bokeh(data):
    if data:
        temps = "".join(data).replace(" ", "").replace("\r\n", "")
        values = re.findall(r'(\d+)', temps)
        c_values = [int(value) for value in values]
        c_keys = re.findall('[\u4e00-\u9fa5]+', temps)  #
        s = pd.Series(c_values, index=c_keys, name='好评率')
        s = s[3:6]
        s_sum = s.sum()
        s = s.apply(lambda x: x / s_sum * 100)
        factors = list(s.index)
        x = s.values
        dot = figure(title="好评率(单位:%)",
                     tools=TOOLS,
                     toolbar_location=None,
                     y_range=factors,
                     x_range=[0, 100],
                     width=400,
                     height=400)
        dot.segment(
            0,
            factors,
            x,
            factors,
            line_width=2,
            line_color="green",
        )
        dot.circle(
            x,
            factors,
            size=15,
            fill_color="orange",
            line_color="green",
            line_width=3,
        )
        script, div = components(dot, CDN)

        return [script, div]
    else:
        return [0, file_hepler.get_image_path("no_good_comments.png")]