def plot(self): self.chart = Scatter(init_opts=opts.InitOpts( page_title=self.title, width='600px', height='500px')) # load data self.chart.add_xaxis(self.data[0][0]) self.chart.add_yaxis(self.yaxis_name, self.data[0][1]) # set options self.chart.set_global_opts( title_opts=opts.TitleOpts(title=self.title), toolbox_opts=opts.ToolboxOpts(is_show=True), datazoom_opts=opts.DataZoomOpts(is_show=True, type_='slider', range_start=0, range_end=100), xaxis_opts=opts.AxisOpts( name=self.xaxis_name, type_='time', name_location='end', name_gap=15, splitline_opts=opts.SplitLineOpts(is_show=True), min_=self.min_x, max_=self.max_x), yaxis_opts=opts.AxisOpts( name=self.yaxis_name, name_location='center', name_gap=15, splitline_opts=opts.SplitLineOpts(is_show=True), max_=self.max_y), visualmap_opts=opts.VisualMapOpts(max_=self.max_y)) self.chart.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) return self
def scatter(df) -> Scatter: if df.empty is False: scatter = ( Scatter() .add_xaxis(xaxis_data=df['当前月处方量']) .add_yaxis( series_name=df.index.tolist(), y_axis=df['月累计相关病人数'], symbol_size=10, label_opts=opts.LabelOpts(is_show=False), ) ) scatter.set_series_opts() scatter.set_global_opts( xaxis_opts=opts.AxisOpts( type_="value", splitline_opts=opts.SplitLineOpts(is_show=True) ), yaxis_opts=opts.AxisOpts( type_="value", axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), ), tooltip_opts=opts.TooltipOpts(is_show=True), title_opts=opts.TitleOpts(title="Scatter-基本示例") ) else: scatter = (Scatter()) return scatter
def bar_base(x, y, xline, yline): scatter = Scatter().add_xaxis(x).add_yaxis( '真实值', y).set_global_opts(title_opts=opts.TitleOpts(title="相关线")) xline = xline.reshape(-1) line = Line().add_xaxis(xaxis_data=xline.tolist()).add_yaxis( series_name="拟合线", y_axis=yline.tolist()) scatter.overlap(line) return scatter
def scatter_render_air(self): c = Scatter() c.add_xaxis(self.x_value) c.add_yaxis( series_name=self.y_name, y_axis=self.inner_data_pair, label_opts=opts.LabelOpts( is_show=self.is_show, formatter=JsCode( "function(params){return params.value[2] +' : '+ params.value[1];}" ))) c.set_global_opts( title_opts=opts.TitleOpts(title=self.title, subtitle=self.subtitle), # tooltip_opts=opts.TooltipOpts( # formatter=JsCode( # "function (params) {return params.name + ' : ' + params.value[2];}" # ) # ), visualmap_opts=opts.VisualMapOpts(type_="color", max_=150, min_=20, dimension=1), legend_opts=opts.LegendOpts(pos_left=self.pos_left, legend_icon=self.legend_icon)) return c
def scatter(): x_data = list(score['人均价格']) y_data = list(score['综合评分']) c = (Scatter(init_opts=opts.InitOpts( width="800px", height="500px", theme=ThemeType.PURPLE_PASSION)). add_xaxis(xaxis_data=x_data).add_yaxis( series_name="", y_axis=y_data, symbol_size=20, label_opts=opts.LabelOpts(is_show=False), ).set_series_opts().set_global_opts( xaxis_opts=opts.AxisOpts( type_="value", splitline_opts=opts.SplitLineOpts(is_show=True), name='人均价格'), yaxis_opts=opts.AxisOpts( type_="value", axistick_opts=opts.AxisTickOpts(is_show=True), splitline_opts=opts.SplitLineOpts(is_show=True), name='评分'), tooltip_opts=opts.TooltipOpts(is_show=False), )) c.render('人均消费与综合评分散点.html') return c
def scatter_value_xaxis() -> Scatter: c = (Scatter().add_xaxis(Faker.values()).add_yaxis( "商家A", Faker.values()).set_global_opts( title_opts=opts.TitleOpts(title="Scatter-X 数值轴"), xaxis_opts=opts.AxisOpts(type_="value"), tooltip_opts=opts.TooltipOpts(formatter="{c}"))) return c
def test_bar_base(): c = (Scatter().add_xaxis(["A", "B", "C"]).add_yaxis("series0", [1, 2, 4]).add_yaxis( "series1", [2, 3, 6])) eq_(c.theme, "white") eq_(c.renderer, "canvas") c.render()
def line_base() -> Scatter: a = (Line().add_xaxis([ "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018" ]).add_yaxis( "Adults_ages_15_newly_infected_with_HIV", Adults_ages_15_newly_infected_with_HIV).add_yaxis( "Children_ages_0_14_newly_infected_with_HIV", Children_ages_0_14_newly_infected_with_HIV).set_global_opts( title_opts=opts.TitleOpts(title="HIV新增感染人数"))) c = (Scatter().add_xaxis([ "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018" ]).add_yaxis("Children_0_14_living_with_HIV", Children_0_14_living_with_HIV).add_yaxis( "Antiretroviral_therapy_coverage", Antiretroviral_therapy_coverage).set_global_opts( title_opts=opts.TitleOpts(title=""), visualmap_opts=opts.VisualMapOpts(type_="size", max_=90, min_=2), )) return render_template( "show_pyecharts.html", bar_data=a.dump_options(), bar_data2=c.dump_options(), desc1= '小结:2000年-2018年,0-14岁群体的艾滋病人数总体呈减少趋势,2000年-2018年,抗逆转录病毒治疗覆盖率正逐年提高。,因此,笔者初步判断,抗病毒治疗对治疗艾滋病具有极大的作用', desc2= '小结:从图表中可以看出,在2000年到2018年间,0-14岁的群体中,新增感染HIV的人数是在逐年减少的, 在2000年到2018年间,15岁以上的群体中,新增感染HIV的人数也是在逐年减少的' )
def scatter_render(self, dic, htmlname): logger.info(dic) df = pd.DataFrame(dic) df.sort_values("文物编号", inplace=True, ascending=True) # 按年龄对数据做升序排序 c = ( Scatter().add_xaxis(df.文物编号.values.tolist()).add_yaxis( "识别准确率", df[[ "准确率", "文物名称", ]].values.tolist(), # 传入信用分与姓名组合,方便js回调函数显示标签 label_opts=opts.LabelOpts(formatter=JsCode( "function(params){return params.value[2];}" # 通过定义JavaScript回调函数自定义标签 ))).set_global_opts( title_opts=opts.TitleOpts(title="识别准确率分布图"), xaxis_opts=opts.AxisOpts( name='文物编号', type_="value", # x轴数据类型是连续型的 min_=0 # x轴范围最小为20 ), yaxis_opts=opts.AxisOpts( name='准确率值', min_=0 # y轴范围最小为700 ))) # xaxis_opts = opts.AxisOpts(name='AC(刷题数)', type_='value', min_=20), # x轴从20开始,原点不为0 # yaxis_opts = opts.AxisOpts(name='ACB(能力值)', min_=100), # y轴起始点的值 c.render('./static/html/%s' % htmlname) return htmlname
def scatter_base(value, label, title, subtitle): c = (Scatter() .add_xaxis(list(range(len(value.numpy().reshape(-1))))) .add_yaxis(label, value.numpy().reshape(-1).tolist(), symbol_size=2,) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) .set_global_opts(title_opts=opts.TitleOpts(title=title, subtitle=subtitle))) return c
def pyechart_Scatter_plot(self, filedata, para): from pyecharts.charts import Scatter file_name = '散点图.html' path_plotly = self.path_dir_plotly_html + os.sep + file_name # 文件路径,前面是文件夹后面是文件名 costumeTheme = self.themedict[para['theme']] # ----------------------------------------------------------------------- Scatter = (Scatter(init_opts=opts.InitOpts( theme=costumeTheme, width=para['width'], height=para['height']))) chart = Scatter df = pd.read_excel(filedata, sheet_name='Sheet1') columns = df.columns.values.tolist() xlabel = columns[0] xdata = df[xlabel].values.tolist() chart.add_xaxis(xaxis_data=xdata) for i in range(1, len(columns)): ylabel = columns[i] ydata = df[ylabel].values.tolist() chart.add_yaxis(series_name=ylabel, y_axis=ydata) if para['x2y']: chart.reversal_axis() self.Common_code(chart, path_plotly, para) print('成功绘制散点图') return path_plotly # 返回该HTML文件路径
def grid_horizontal(): scatter = ( Scatter() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts( toolbox_opts=opts.ToolboxOpts(is_show=True), title_opts=opts.TitleOpts(title="Grid-Scatter"), legend_opts=opts.LegendOpts(pos_left="20%"), ) ) line = ( Line() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts( toolbox_opts=opts.ToolboxOpts(is_show=True), title_opts=opts.TitleOpts(title="Grid-Line", pos_right="5%"), legend_opts=opts.LegendOpts(pos_right="20%"), ) ) grid = ( Grid() .add(scatter, grid_opts=opts.GridOpts(pos_left="55%")) .add(line, grid_opts=opts.GridOpts(pos_right="55%"))) return grid
def score_vs_comment_num(movies): scores = [m.score for m in movies[:10]] comment_nums = [m.comment_num for m in movies[:10]] c = (Scatter().add_xaxis(scores).add_yaxis( "comment_nums", comment_nums).set_global_opts( title_opts=options.TitleOpts(title="Score VS Comment num"))) c.render('charts/scatter.html')
def dong_scatter(data, info='', path0=''): from pyecharts import options as opts from pyecharts.commons.utils import JsCode from pyecharts.charts import Scatter, Timeline # endlist = ['canshu', 'celue_name', '预测_s_Time', '未来end_3', '最终预测值1', 'hg最终预测值1'] data['aim'] = data['canshu'] + data['celue_name'] data.rename(columns={ 'hg最终预测值1': '预测值', '未来end_3': '未来=月终收益', '预测_s_Time': 's_Time' }, inplace=True) print(data.columns) print(data.tail()) title = '动态图' df = data # data['预测值'] = data['预测值'].apply(lambda x: int(x)) min_pre = min(data['预测值'].values.tolist()) max_pre = max(data['预测值'].values.tolist()) # df['未来=月终收益']=df['未来=月终收益'].apply(lambda x: int(x)) # df['预测值']=df['预测值'].apply(lambda x: int(x)) df['s_Time'] = pd.to_datetime( df['s_Time']) #.apply(lambda x:x.strftime(format="%Y-%m-%d")) df.sort_values(by=['s_Time'], ascending=True, inplace=True) tl = Timeline() timelist = list(set(df['s_Time'].tolist())) print(list(set(df['s_Time'].tolist()))) sorted(timelist) # df_date = [time.strftime('%Y-%m-%d',time.localtime(i/1000000000) ) for i in timelist] # print(df_date) for k, i in enumerate(sorted(timelist)): # print(k,i) xdata = df.loc[df['s_Time'] == i, '预测值'].values.tolist() ydata = df.loc[df['s_Time'] == i, ['未来=月终收益', '预测值']].values.tolist() # print(ydata) Scatter0 = (Scatter().add_xaxis(xdata).add_yaxis( '未来=月终收益', ydata, label_opts=opts.LabelOpts(is_show=False) ).set_series_opts().set_global_opts( xaxis_opts=opts.AxisOpts( name='预测值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), yaxis_opts=opts.AxisOpts( name='真实值:', type_="value", axistick_opts=opts.AxisTickOpts(is_show=True)), title_opts=opts.TitleOpts(title=f"{title}==:{i}月份的数据"), tooltip_opts=opts.TooltipOpts(formatter=JsCode( "function (params) { return '真实:'+params.value[1] +' == 预测:'+ params.value[2];}" )), visualmap_opts=opts.VisualMapOpts(min_=min_pre, max_=max_pre), )) tl.add(Scatter0, "{}月".format(i)) tl.render(path0 + f"{info}.html") print(path0 + f"{info}.html")
def scatter_muti_diemnsion_data(): c = ( Scatter() .add_xaxis(Faker.choose()) .add_yaxis( "商家A", [list(z) for z in zip(Faker.values(), Faker.choose())], label_opts=opts.LabelOpts( formatter=JsCode( "function (params) {return params.value[1] +' : '+ params.value[2];}" ) ), ) .set_global_opts( toolbox_opts=opts.ToolboxOpts(is_show=True), tooltip_opts=opts.TooltipOpts( formatter=JsCode( "function (params) {return params.name +' : ' +params.value[2];}" ) ), visualmap_opts=opts.VisualMapOpts( type_="color", max_=150, min_=20, dimension=1 ), ) ) return c
def scatter_visualmap_color() -> Scatter: c = (Scatter().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values()).set_global_opts( title_opts=opts.TitleOpts(title="Scatter-VisualMap(Color)"), visualmap_opts=opts.VisualMapOpts(max_=150), )) return c
def scatter_debug_diff() -> Scatter: f = open('case_data.json', encoding='utf-8') res = f.read() data = json.loads(res) xy_data = [] tmp = [] x_data = [] y_data = [] # x轴为难度,y轴为debug时间 for k in data.keys(): if data[k]["case_type"] == "字符串": tmp = [data[k]["final_score"], data[k]["average_interval(min)"]] xy_data.append(tmp) xy_data = sorted(xy_data) for tmp in xy_data: x_data.append(tmp[0]) y_data.append(tmp[1]) # y_data.append(round(tmp[1]/10,2)) scatter3 = ( Scatter() .add_xaxis(x_data) .add_yaxis("debug-time(min)", y_data) .set_global_opts( title_opts=opts.TitleOpts(title='scatter debug-diff'), visualmap_opts=opts.VisualMapOpts(max_=600) ) ) return scatter3
def draw_uniform_points(): x, y = [i for i in range(100)], [round(uniform(0, 10), 2) for _ in range(100)] print(y) c = (Scatter() .add_xaxis(x) .add_yaxis('y', y)) c.render()
def scatter_base() -> Scatter: c = ( Scatter() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Scatter-基本示例")) ) return c
def scatter_visualmap_size() -> Scatter: c = (Scatter().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts( title_opts=opts.TitleOpts(title="Scatter-VisualMap(Size)"), visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20), )) return c
def test_scatter_base(fake_writer): c = (Scatter().add_xaxis(["A", "B", "C"]).add_yaxis("series0", [1, 2, 4]).add_yaxis( "series1", [2, 3, 6])) c.render() _, content = fake_writer.call_args[0] assert_equal(c.theme, "white") assert_equal(c.renderer, "canvas")
def scatter_spliteline(self, key, value, city, title) -> Scatter: c = (Scatter().add_xaxis(key).add_yaxis(city, value).set_global_opts( title_opts=opts.TitleOpts(title=title), xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts( is_show=True)), yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts( is_show=True)), )) return c
def scatter_rating_likes() -> Scatter: c = (Scatter().add_xaxis(range(1, 6)).add_yaxis( "点赞数", likes_new).set_global_opts( title_opts=opts.TitleOpts(title="评分-点赞图"), visualmap_opts=opts.VisualMapOpts(type_="size", max_=100000, min_=20000), )) return c
def pycharts_visit(): c = ( Scatter() .add_yaxis("负面情绪") .add_xaxis("正面情绪") .render("散点图.html") .set_global_opts(title_opts=opts.TitleOpts(title="Scatter-基本示例")) ) return c
def scatter_spliteline() -> Scatter: c = (Scatter().add_xaxis(Faker.choose()).add_yaxis( "商家A", Faker.values()).set_global_opts( title_opts=opts.TitleOpts(title="Scatter-显示分割线"), xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts( is_show=True)), yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts( is_show=True)), )) return c
def scatter_base(choose, values, country) -> Scatter: c = ( Scatter().add_xaxis(choose).add_yaxis( "%s历年GDP" % country, values).set_global_opts( title_opts=opts.TitleOpts(title=""), # datazoom_opts=opts.DataZoomOpts(), yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts( formatter="{value} /万亿"))).set_series_opts( label_opts=opts.LabelOpts(is_show=False))) return c
def test_bar_base(): c = ( Scatter() .add_xaxis(["A", "B", "C"]) .add_yaxis("series0", [1, 2, 4]) .add_yaxis("series1", [2, 3, 6]) ) assert c.theme == "white" assert c.renderer == "canvas" c.render("render.html")
def overlap_line_scatter() -> Line: x = Faker.choose() line = (Line().add_xaxis(x).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts( title="Overlap-line+scatter"))) scatter = (Scatter().add_xaxis(x).add_yaxis("商家A", Faker.values()).add_yaxis( "商家B", Faker.values())) line.overlap(scatter) return line
def draw_factor_eval(df: pd.DataFrame): cols = df.columns.tolist() cols.remove('return_close') charts = [] for i in range(len(cols)): dataset_ = [ list(z) for z in zip(df[cols[i]].tolist(), df[cols[i]].shift(-1).tolist()) ] chart = (Scatter().add_dataset( dimensions=["factor", "next_factor"], source=dataset_, ).add_yaxis( series_name=cols[i], y_axis=[], symbol_size=2.5, xaxis_index=0, yaxis_index=0, encode={ "x": "factor", "y": "next_factor", "tooltip": [0, 1, 2, 3, 4] }, label_opts=opts.LabelOpts(is_show=False), ).set_global_opts(xaxis_opts=opts.AxisOpts( type_="value", grid_index=0, name="factor", axislabel_opts=opts.LabelOpts(rotate=50, interval=0), is_scale=True, ), yaxis_opts=opts.AxisOpts(type_="value", grid_index=0, name="next_factor", is_scale=True), title_opts=opts.TitleOpts(title="Factor Eval"), datazoom_opts=[ opts.DataZoomOpts(range_start=95, range_end=100), opts.DataZoomOpts(is_show=False, type_='inside', range_start=95, range_end=100) ], toolbox_opts=opts.ToolboxOpts(), tooltip_opts=opts.TooltipOpts( is_show=True, trigger='axis', axis_pointer_type='cross', ))) chart.width = "600PX" chart.height = "600PX" charts.append(chart) return charts
def DIC_scatter() -> Scatter: c = (Scatter().add_xaxis(DQ).add_yaxis( "2018年人均可支配收入(十元)", list(DIPC["2018年"])).add_yaxis("博物馆机构数", BQ2018).set_global_opts( title_opts=opts.TitleOpts(title="2018年全国各地可支配收入展示"), datazoom_opts=[ opts.DataZoomOpts(), opts.DataZoomOpts(orient="vertical"), opts.DataZoomOpts(type_="inside") ], )) return c