def __plot_con_notebook(self, split_n)->pyecharts.charts.Bar: """ 调用echarts,连续变量 :param split_n: :return: """ data = self.data[~np.isnan(self.X)] data.sort_values('X',inplace=True) X = data['X'].values y = data['y'].values max_x = max(X) min_x = min(X) freq,edge = np.histogram(X, np.linspace(min_x, max_x, split_n+1)) freq = np.round(freq/data.shape[0] *100,2) # print(freq) # print(edge) bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)) bar.load_javascript() bar.add_xaxis([('(' + str(int(edge[i])) + ' , ' + str(int((edge[i + 1]))) + ']') if i else ( '[' + str(int(edge[i])) + ' , ' + str(int((edge[i + 1]))) + ']') for i in range(len(edge) - 1)]) bar.add_yaxis(self.var_name, freq.tolist(), category_gap=1, ) bar.set_global_opts(title_opts=opts.TitleOpts(title=self.var_name), datazoom_opts=opts.DataZoomOpts(is_show=True), xaxis_opts=opts.AxisOpts(name_location='end', name='Groups'), yaxis_opts=opts.AxisOpts(name_location='end', name='%'), ) bar.set_series_opts(label_opts=opts.LabelOpts(is_show=True)) return bar
def show(x: list, y: list, title: str = "键盘键入统计"): bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND)) bar.add_xaxis(x) bar.add_yaxis("", y, category_gap="60%") bar.set_series_opts( itemstyle_opts={ "normal": { "color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: 'rgba(0, 244, 255, 1)' }, { offset: 1, color: 'rgba(250, 177, 160, 1)' }], false)"""), "barBorderRadius": [30, 30, 30, 30], "shadowColor": "rgb(0, 160, 221)", } }) bar.set_global_opts( title_opts=opts.TitleOpts(title=title), datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")], ) bar.load_javascript() bar.render_notebook() return Markup(bar.render_embed())
def __plot_cat_notebook(self): data = pd.value_counts(self.X) x = list(data.index.values) values = list(data.values / np.sum(data.values) * 100) bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)) bar.load_javascript() bar.add_xaxis([i for i in x]) bar.add_yaxis("1", [round(i, 2) for i in values]) bar.set_global_opts(title_opts=opts.TitleOpts(title=self.var_name), xaxis_opts=opts.AxisOpts(name_location='end', name='%'), yaxis_opts=opts.AxisOpts(name_location='end', name='Groups'), ) bar.reversal_axis() bar.set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="right")) return bar