Ejemplo n.º 1
0
class HeatMapChart(base_chart.BaseChart):
    chart = None

    zaxis_name = None

    data_x = []
    data_y = []
    heat_map = []
    max_value = 0
    min_value = 0

    def __init__(self, title, xaxis_name, yaxis_name, zaxis_name):
        base_chart.BaseChart.__init__(self, title, xaxis_name, yaxis_name)
        self.zaxis_name = zaxis_name

    def clear(self):
        self.data_x.clear()
        self.data_y.clear()
        self.heat_map.clear()

    def set_data(self, **data):
        if ('x' in data) & ('y' in data) & ('map' in data):
            self.data_x = data['x']
            self.data_y = data['y']
            self.to_echarts_map(data['map'])
        return self

    def show(self):
        return self.chart

    def to_echarts_map(self, map) -> []:
        self.max_value = map[0][0]
        self.min_value = map[0][0]
        for i in range(len(map)):
            for j in range(len(map[i])):
                if self.max_value < map[i][j]:
                    self.max_value = map[i][j]
                if self.min_value > map[i][j]:
                    self.min_value = map[i][j]
                self.heat_map.append([j, i, map[i][j]])
        return self.heat_map

    def plot(self):
        self.chart = HeatMap(init_opts=opts.InitOpts(page_title=self.title))

        # load data
        self.chart.add_xaxis(self.data_x)
        self.chart.add_yaxis(self.zaxis_name, self.data_y, self.heat_map)

        self.chart.set_global_opts(
            title_opts=opts.TitleOpts(title=self.title),
            xaxis_opts=opts.AxisOpts(name=self.xaxis_name,
                                     name_location='end',
                                     name_gap=15),
            yaxis_opts=opts.AxisOpts(name=self.yaxis_name,
                                     name_location='end',
                                     name_gap=15),
            visualmap_opts=opts.VisualMapOpts(max_=self.max_value,
                                              min_=self.min_value))
        return self
Ejemplo n.º 2
0
def heat_map(data: List[dict],
             x_label: List[str] = None,
             y_label: List[str] = None,
             title: str = "热力图",
             width: str = "900px",
             height: str = "680px") -> HeatMap:
    """绘制热力图

    :param data: 用于绘制热力图的数据,示例如下
        [{'x': '0hour', 'y': '0day', 'heat': 11},
         {'x': '0hour', 'y': '1day', 'heat': 40},
         {'x': '0hour', 'y': '2day', 'heat': 38},
         {'x': '0hour', 'y': '3day', 'heat': 36},
         {'x': '0hour', 'y': '4day', 'heat': 11}]
    :param x_label: x轴标签
    :param y_label: y轴标签
    :param title: 图表标题
    :param width: 图表宽度
    :param height: 图表高度
    :return: 图表
    """

    value = [[s['x'], s['y'], s['heat']] for s in data]
    heat = [s['heat'] for s in data]

    if not x_label:
        x_label = sorted(list(set([s['x'] for s in data])))

    if not y_label:
        y_label = sorted(list(set([s['y'] for s in data])))

    vis_map_opts = opts.VisualMapOpts(pos_left="90%", pos_top="20%", min_=min(heat), max_=max(heat))
    title_opts = opts.TitleOpts(title=title)
    init_opts = opts.InitOpts(page_title=title, width=width, height=height)
    dz_inside = opts.DataZoomOpts(False, "inside", xaxis_index=[0], range_start=80, range_end=100)
    dz_slider = opts.DataZoomOpts(True, "slider", xaxis_index=[0], pos_top="96%", pos_bottom="0%",
                                  range_start=80, range_end=100)
    legend_opts = opts.LegendOpts(is_show=False)

    hm = HeatMap(init_opts=init_opts)
    hm.add_xaxis(x_label)
    hm.add_yaxis("heat", y_label, value, label_opts=opts.LabelOpts(is_show=True, position="inside"))
    hm.set_global_opts(title_opts=title_opts, visualmap_opts=vis_map_opts, legend_opts=legend_opts,
                       xaxis_opts=opts.AxisOpts(grid_index=0), datazoom_opts=[dz_inside, dz_slider])
    return hm
Ejemplo n.º 3
0
    def v_correlation(self, end=yesterdayobj(), vopts=None):
        """
        各基金净值的相关程度热力图可视化

        :param end: string or object of date, the end date of the line
        :returns: pyecharts.charts.Heatmap.render_notebook object
        """
        ctable = self.correlation_table(end)
        x_axis = list(ctable.columns)
        data = [[i, j, ctable.iloc[i, j]] for i in range(len(ctable))
                for j in range(len(ctable))]
        heatmap = HeatMap()
        heatmap.add_xaxis(x_axis)
        heatmap.add_yaxis(series_name="相关性", yaxis_data=x_axis, value=data)
        if vopts is None:
            vopts = heatmap_opts
        heatmap.set_global_opts(**vopts)

        return heatmap.render_notebook()
Ejemplo n.º 4
0
]

parallel_data = [[12.99, 100, 82, "Good"], [9.99, 80, 77, "OK"],
                 [20, 120, 60, "Excellent"]]
# init_opts=opts.InitOpts(width="800px",height="300px")
parallel = Parallel(init_opts=opts.InitOpts(width="800px", height="300px"))
parallel.add_schema(parallel_axis)
parallel.add(series_name="Related Indexes",
             data=parallel_data,
             linestyle_opts=opts.LineStyleOpts(width=4, opacity=0.5))

liquid = Liquid(init_opts=opts.InitOpts(width="300px", height="300px"))
liquid.add("liquid", [0.6, 0.7, 0.3])
liquid.set_global_opts(title_opts=opts.TitleOpts(title="Basic Example"))

heatmap_data = [[i, j, random.randint(0, 50)] for i in range(7)
                for j in range(7)]
heatmap = HeatMap()
heatmap.add_xaxis(Faker.week)
heatmap.add_yaxis(
    "相关表",
    Faker.week,
    heatmap_data,
    label_opts=opts.LabelOpts(is_show=True, position="inside"),
)

heatmap.set_global_opts(
    title_opts=opts.TitleOpts(title="HeatMap-Label 显示"),
    visualmap_opts=opts.VisualMapOpts(),
)
Ejemplo n.º 5
0
for i in range(4, 10):
    kw_counts_by_score[i] = pd.read_csv(r'.\data_set\{0}_movie_keywords.csv'.format(i))

kw_percentage_df = pd.DataFrame([], columns=list(range(4, 10)), index=kw_counts_by_score[9]['kw'][:10])

# 将数据写入空表
for i in range(4, 10):
    kw_df = kw_counts_by_score[i]
    kw_df = kw_df[kw_df['kw'].isin(kw_percentage_df.index)]
    kw_percentage_df[i] = pd.Series(list(kw_df['percentage']), index=kw_df['kw'])

# 用0替换NAN,否则无法计算
kw_percentage_df.fillna(0, inplace=True)

# 建立有三个元素的列表,作为绘制的数据
data = []
i = 0
for index in kw_percentage_df.index:
    j = 0
    for column in kw_percentage_df.columns:
        data.append([j, i, kw_percentage_df[column][index] * 100])
        j += 1
    i += 1

# 绘制热力图
heatmap = HeatMap()
heatmap.add_xaxis(list(kw_percentage_df.columns))
heatmap.add_yaxis('电影评论关键词热力图', list(kw_percentage_df.index), data)
heatmap.set_global_opts(visualmap_opts=opts.VisualMapOpts(min_=0, max_=10, orient='horizontal'))
heatmap.render('comment_heatmap.html')
Ejemplo n.º 6
0
# -*- coding: utf-8 -*-
"""
Created on Sun Dec 13 22:17:48 2020

@author: Administrator
"""


import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from pyecharts.charts import HeatMap
from pyecharts import options as opts

s = StandardScaler()
data = pd.read_excel('info_movies.xls')[['rank','year','score','comment']]
column = data.columns.tolist()
data1 = s.fit_transform(data)
corr = abs(np.corrcoef(data1.T))
value = [[i, j, corr[i,j]] for i in range(4) for j in range(4)]
heatmap = HeatMap()
heatmap.add_xaxis(column)
heatmap.add_yaxis("相关性热力学图", column, value)
heatmap.set_global_opts(
        title_opts=opts.TitleOpts(title="豆瓣电影排行数据分析结果"),
        visualmap_opts=opts.VisualMapOpts(max_=1),
    )
heatmap.render('templates/corr.html')