def sandiandayinziti(): '''散点打印字体''' scatter = Scatter("散点图示例") v1, v2 = scatter.draw("./img.PNG") scatter.add("散点图打印文字", v1, v2, is_random=True) scatter.render('./info/散点图打印文字.html')
def test_scatter_xaxis_type_category(): scatter = Scatter("散点图示例") scatter.add("A", ["a", "b", "c", "d", "e", "f"], v2) scatter.add("B", ["a", "b", "c", "d", "e", "f"], v1[::-1], xaxis_type="category") assert '"type": "category"' in scatter._repr_html_()
def test_scatter_xaxis_type_category(): scatter = Scatter("散点图示例") scatter.add("A", ["a", "b", "c", "d", "e", "f"], v2) scatter.add( "B", ["a", "b", "c", "d", "e", "f"], v1[::-1], xaxis_type="category" ) assert '"type": "category"' in scatter._repr_html_()
def test_scatter_extra_name(): def custom_formatter(params): return params.value[3] data = [[28604, 77, 17096], [31163, 77.4, 27662], [1516, 68, 11546]] x_lst = [v[0] for v in data] y_lst = [v[1] for v in data] extra_data = [v[2] for v in data] extra_name = ["point A", "point B", "point C"] sc = Scatter() sc.add( "scatter", x_lst, y_lst, extra_data=extra_data, extra_name=extra_name, is_visualmap=True, visual_dimension=2, visual_orient="horizontal", visual_type="size", visual_range=[17000, 28000], visual_text_color="#000", tooltip_formatter=custom_formatter, ) assert "point A" in sc._repr_html_() assert "point B" in sc._repr_html_() assert "point C" in sc._repr_html_()
def tu_Gussian(self,dataname="None",X=None,TrainData=None,choice=12): #测试数据集 if X==None: X,y=make_blobs(n_samples=100,n_features=3,centers=[[3,3, 3], [0,0,0], [1,1,1], [2,2,2]], cluster_std=[0.2, 0.1, 0.2, 0.2], random_state =9) n=X.shape[1] m=X.shape[0] if TrainData==None: col=np.random.randint(0,1,(98,1)) col2=np.random.randint(1,2,(2,1)) TrainData=np.column_stack((X,np.row_stack((col,col2)))) #高斯模型 mu1,sigms1=self.estimateGaussion(X) if choice==1: px_one=gaussian(sigms1,X,mu1) if n<=10: scatter=Scatter("featurn") for j in range(0,n): scatter.add(str(j),X[:,j],px_one[:,j]) else: px_one=self.multivariateGaussian(X,mu1,sigms1) scatter=Scatter("featurn") def f(x): y=1 for i in range(n): y=y*x[i] return y scatter.add("总体分布",map(f,X),px_one) #交叉验证,取得最好epsilon len = TrainData.shape[1] Xval=TrainData[:,0:-1] Yval=TrainData[:,-1] pvals=[] #各个特征值的概率相乘 if choice==1: pval=gaussian(sigms1,Xval,mu1) for i in range(0,m): pvals.append(reduce(mul,pval[i,:])) else: pvals=self.multivariateGaussian(Xval,mu1,sigms1) epsilon,F1=self.selectThreshold(Yval,pvals) yc=[0] #异常点为0 def filteryc(x): return x[n-1] in yc newdata=filter(filteryc,X) save_helper.save_txt_helper(newdata,dataname) outliers=np.where(px_one<epsilon) scatter2=ksh.ksh_scatter("离散点异常分布图","正常点",X,"FG","异常点",X[outliers]) self.page.add(scatter) self.page.add(scatter2) save_helper.save_tu_helper(self.page,dataname)
def test_grid_four_direction(): v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%") bar.add("商家A", CLOTHES, v1, is_stack=True) bar.add("商家B", CLOTHES, v2, is_stack=True, legend_pos="80%") line = Line("折线图示例") line.add("最高气温", WEEK, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", WEEK, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add("es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%") grid = Grid() grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") grid.render()
def main(): dutPl0 = [] dutpl1 = [] maxCntPl0 = [] maxCntPl1 = [] page = Page("Cluster Padding Figure") txtFiles = [name for name in os.listdir('./') if name.endswith('.txt')] for textLogName in txtFiles: waferNum = re.split(r'_', textLogName) with open(textLogName, 'rt') as clusterFile: for line in clusterFile: if re.match(r'IncomingBBKCount[A-Za-z0-9_.\+\-\*\/\s]*BBKP', line): splitColon = re.split(r'\s*[:]\s*', line) splitColon1 = splitColon[0] splitColon2 = splitColon[1] splitColon3 = splitColon[2] listBlk = re.split(r'\s*[\s]\s*', splitColon3) padBlk = paddingBlk(listBlk) maxCnt = clusterBlk(padBlk) splitSpace = re.split(r'\s*[\s]\s*', splitColon1) intDut = int(splitSpace[1].replace('DUT', '')) if splitSpace[2] == "BBKP0": dutPl0.append(intDut) maxCntPl0.append(maxCnt) else: dutpl1.append(intDut) maxCntPl1.append(maxCnt) scatter = Scatter(waferNum[2]) scatter.add("PL0", dutPl0, maxCntPl0, xaxis_name = "DUT", yaxis_name = "Max Padding BB", is_more_utils = True) scatter.add("PL1", dutpl1, maxCntPl1, xaxis_name = "DUT", yaxis_name = "Max Padding BB", is_more_utils = True) page.add(scatter) page.render()
def Scatter_creater(): max_axis_value = max(max(ControlSample), max(KnockOutSample)) scatter = Scatter('OMG', width=800, height=600) scatter.add('gene', ControlSample, KnockOutSample, extra_name=gene_id, xaxis_max=max_axis_value, yaxis_max=max_axis_value, is_label_emphasis=True, label_formatter=lable_formatter, symbol_size=8, is_datazoom_show=True, is_datazoom_extra_show=True, datazoom_range=[0, 100], datazoom_extra_range=[0, 100], datazoom_type='both', datazoom_extra_type='both', tooltip_formatter=tooltip_formatter, extra_data=LogFC, is_visualmap=True, visual_dimension=2, visual_orient='vertical', visual_range=[-1, 1], visual_range_color=['#50a3ba', '#d94e5d'], visual_pos=-5, is_toolbox_show=False) scatter.show_config() return scatter
def test_grid_four_direction(): attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%") bar.add("商家A", attr, v1, is_stack=True) bar.add("商家B", attr, v2, is_stack=True, legend_pos="80%") line = Line("折线图示例") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add("es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%") grid = Grid() grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") grid.render()
def visual_scatter_group_data_by_col(group_data, col_name, page): x_value = list(group_data[col_name]) y_value = list(group_data['rate']) scatter = Scatter() scatter.add(col_name, x_value, y_value) page.add(scatter) return page
def test_scatter_multi_dimension(): data = [ [28604, 77, 17096869], [31163, 77.4, 27662440], [1516, 68, 1154605773], [13670, 74.7, 10582082], [28599, 75, 4986705], [29476, 77.1, 56943299], [31476, 75.4, 78958237], [28666, 78.1, 254830], [1777, 57.7, 870601776], [29550, 79.1, 122249285], [2076, 67.9, 20194354], [12087, 72, 42972254], [24021, 75.4, 3397534], [43296, 76.8, 4240375], [10088, 70.8, 38195258], [19349, 69.6, 147568552], [10670, 67.3, 53994605], [26424, 75.7, 57110117], [37062, 75.4, 252847810] ] x_lst = [v[0] for v in data] y_lst = [v[1] for v in data] extra_data = [v[2] for v in data] sc = Scatter() sc.add("scatter", x_lst, y_lst, extra_data=extra_data, is_visualmap=True, visual_dimension=2, visual_orient='horizontal', visual_type='size', visual_range=[254830, 1154605773], visual_text_color='#000') sc.render()
def scatter(title, range_def, data): from pyecharts import Scatter # import random # data = [random.randint(0, 100) for _ in range(80)] range_color = [ '#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026' ] scatter = Scatter( title, width=400, height=300, background_color='#b0bab9', ) scatter.add("", range(len(data)), data, visual_range=range_def, is_visualmap=True, visual_range_color=range_color, mark_line=['average'], mark_point=['max', 'min']) return scatter.render_embed()
def test_scatter_multi_dimension(): data = [[28604, 77, 17096869], [31163, 77.4, 27662440], [1516, 68, 1154605773], [13670, 74.7, 10582082], [28599, 75, 4986705], [29476, 77.1, 56943299], [31476, 75.4, 78958237], [28666, 78.1, 254830], [1777, 57.7, 870601776], [29550, 79.1, 122249285], [2076, 67.9, 20194354], [12087, 72, 42972254], [24021, 75.4, 3397534], [43296, 76.8, 4240375], [10088, 70.8, 38195258], [19349, 69.6, 147568552], [10670, 67.3, 53994605], [26424, 75.7, 57110117], [37062, 75.4, 252847810]] x_lst = [v[0] for v in data] y_lst = [v[1] for v in data] extra_data = [v[2] for v in data] sc = Scatter() sc.add("scatter", x_lst, y_lst, extra_data=extra_data, is_visualmap=True, visual_dimension=2, visual_orient='horizontal', visual_type='size', visual_range=[254830, 1154605773], visual_text_color='#000') sc.render()
def scatter(title, range_def, data, size=None): # import random # data = [random.randint(0, 100) for _ in range(80)] range_color = ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] if size is None: scatter = Scatter(title, width=320, height=180, title_pos="center", background_color='#b0bab9', ) else: scatter = Scatter(title, width=size['width'], height=size['height'], title_pos="center", background_color='#b0bab9', ) scatter.add("", range(len(data)), data, visual_range_size=range_def, is_visualmap=False, visual_range_color=range_color, mark_line=['average'], mark_point=['max', 'min']) scatter.options['toolbox']['show'] = False return scatter.render_embed()
def test_scatter_default(): scatter = Scatter("散点图示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2) html_content = scatter._repr_html_() assert '"type": "value"' in html_content assert '"type": "category"' not in html_content
def draw(generation): s = [] for i in generation: s.append(i[1]) scatter = Scatter('牛顿法') # 因为牛顿法收敛很快,所以用横坐标表示不明显,故用次数表示 scatter.add('', list(range(len(s))), s) scatter.render('牛顿法.html')
def sandiantu(): '''散点图''' v1 = [10, 20, 30, 40, 50, 60] v2 = [10, 20, 30, 40, 50, 60] scatter = Scatter("散点图示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2) scatter.render('./info/散点图.html')
def DrawScatter(title, data, savepath='./results'): if not os.path.exists(savepath): os.mkdir(savepath) scatter = Scatter(title) attrs = [i for i, j in data.items()] values = [j for i, j in data.items()] scatter.add('', attrs, values, is_visualmap=True) scatter.render(os.path.join(savepath, '%s.html' % title))
def DraScatter(self, title, data, savepath='./result'): if (os.path.exists(savepath) is None): os.mkdir(savepath) scatter = Scatter(title) attrs = [data[i][0] for i in range(len(data))] vals = [data[i][1] for i in range(len(data))] scatter.add('', attrs, vals, is_visualmap=True) scatter.render(os.path.join(savepath, '%s.html' % title))
def test_scatter_visualmap_type_size(): scatter = Scatter("散点图示例") scatter.add("B", v1[::-1], v2, is_visualmap=True, visual_type='size', visual_range_size=[20, 80]) scatter.render()
def draw(generator, name): scatter = Scatter(name) s1 = [] s2 = [] for i in generator: s1.append(i[0]) s2.append(i[1]) scatter.add('', s1, s2) scatter.render(name + '.html')
def draw(generation): scatter = Scatter('定点法') s = [] s1 = [] for i in generation: s.append(i[0]) s1.append(i[1]) scatter.add('', s, s1) scatter.render('定点迭代法.html')
def draw(generation): s1 = [] s2 = [] for i in generation: s1.append(i[0]) s2.append(i[1]) scatter = Scatter('弦截法') scatter.add('', s1, s2) scatter.render('弦截法.html')
def scatter(): from pyecharts import Scatter v1 = [10, 20, 30, 40, 50, 60] v2 = [10, 20, 30, 40, 50, 60] scatter = Scatter("散点图示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2) return template(scatter)
def tmp(): es = Scatter() x = [] y = [] for item in data: x.append(item[2]) y.append(item[3]) es.add('', x, y) es.render('1.html') return render_template('1.html')
def drawlog(dic): """ :param his: keras fit返回的的history对象字典 :return: """ line = Scatter("log") for label, value in dic.items(): line.add(label, [i for i in range(len(value))], value, symbol_size=3) line.render(path="output/temp.html")
def test_scatter_visualmap_type_size(): scatter = Scatter("散点图示例") scatter.add( "B", v1[::-1], v2, is_visualmap=True, visual_type="size", visual_range_size=[20, 80], ) scatter.render()
def test_scatter_option(patched): fixture = "scatter_options.json" patched.return_value = "1" v1 = [10, 20, 30, 40, 50, 60] v2 = [10, 20, 30, 40, 50, 60] scatter = Scatter("scatter test") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2) actual_options = dumps_actual_options(scatter.options) expected = get_fixture_content(fixture) for a, b in zip(actual_options.split("\n"), expected.split("\n")): eq_(a.strip(), b.strip())
def show(self, class_key: dict, title: str, image_name): # print(self.show_coordinates) scatter = Scatter(title=title, background_color='#ffe') for i in range(0, self.show_coordinates.shape[0]): point = self.show_coordinates.iloc[i]['point'] # print(point, class_key[point]) coordinates = self.show_coordinates.iloc[i]['vector'] # print(type(coordinates), type(class_key[point])) scatter.add(class_key[point], [coordinates[0]], [coordinates[1]]) temp_path = 'html/render.html' scatter.render(path=temp_path) make_a_snapshot(temp_path, image_name)
def scatter_demo(self): # 散点图 from pyecharts import Scatter scatter = Scatter('散点图', '一年的降水量与蒸发量') # xais_name是设置横坐标名称,这里由于显示问题,还需要将y轴名称与y轴的距离进行设置 scatter.add("降水量与蒸发量的散点分布", self.data1, self.data2, xaxis_name="降水量", yaxis_name="蒸发量", yaxis_name_gap=40) scatter.render('sactter.html')
def scatter(self): cmtnum = [] likenum = [] timeS = [] for item in self.data: cmtnum.append(item[0]) likenum.append(item[1]) d = datetime.fromtimestamp(item[2]) timeS.append(d.year + d.month / 12) y_min = datetime.fromtimestamp(self.createtime_min).year y_max = datetime.fromtimestamp(self.createtime_max).year scatter = Scatter('本人说说点赞数与评论数的时间序列(二维)') scatter.add('评论数', timeS, cmtnum, extra_data=cmtnum, xaxis_max=y_max, xaxis_min=y_min, is_datazoom_extra_show=True, datazoom_extra_type='inside', legend_pos='right', xaxis_name='年份', is_visualmap=True, visual_dimension=2, visual_orient="horizontal", visual_type="size", visual_range=[0, 205], visual_range_size=[5, 20], visual_text_color="#000") scatter.add('点赞数', timeS, likenum, extra_data=likenum, xaxis_max=y_max, xaxis_min=y_min, is_datazoom_extra_show=True, datazoom_extra_type='inside', legend_pos='right', xaxis_name='年份', is_visualmap=True, visual_dimension=2, visual_orient="horizontal", visual_type="size", visual_range=[0, 205], visual_range_size=[5, 20], visual_text_color="#000") scatter.render(self.path + 'scatter2d_' + str(int(time.time())) + '.html') webbrowser.open_new_tab(self.path + 'scatter2d_' + str(int(time.time())) + '.html') self.ins.analysis_pb['value'] = 100 self.ins.analysis_lb.configure(text='完毕')
def scatter_echar_AvgArea_price(self): x, y = self.getPriceInterval_avg() scatter = Scatter("广州市租房平均面积与平均价格关系图") scatter.add( "平均面积-平均价格", x, y, yaxis_name="平均价格(元)", xaxis_name="平均面积(平米)", yaxis_name_gap=50, ) scatter.render('scatter_avgAreaPrice.html')
def test_scatter_option(patched): patched.return_value = "1" v1 = [10, 20, 30, 40, 50, 60] v2 = [10, 20, 30, 40, 50, 60] scatter = Scatter("scatter test") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2) actual_options = json.dumps( scatter.options, sort_keys=True, indent=4, cls=DefaultJsonEncoder ) expected = get_fixture_content("scatter_options.json") for a, b in zip(actual_options.split("\n"), expected.split("\n")): eq_(a.strip(), b.strip())
def test_grid_left_right(): v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter(width=1200) scatter.add("散点图示例", v1, v2, legend_pos="70%") es = EffectScatter() es.add("动态散点图示例", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_pos="20%") grid = Grid() grid.add(scatter, grid_left="60%") grid.add(es, grid_right="60%") grid.render()
def create_scatter(df): """ 三维度散点图 """ # 生成数据列表 data = [list(i) for i in zip(df['videos'], df['fans'], df['likes'])] print(data) # 生成散点图 x_lst = [v[0] for v in data] y_lst = [v[1] for v in data] extra_data = [v[2] for v in data] sc = Scatter("抖音大V视频数粉丝数点赞数三维度", title_pos='center', title_top='5', width=800, height=400) sc.add("", x_lst, y_lst, extra_data=extra_data, is_visualmap=True, visual_dimension=2, visual_orient="horizontal", visual_type="size", visual_range=[0, 500000000], visual_text_color="#000", visual_range_size=[5, 30]) sc.render('抖音大V视频数粉丝数点赞数三维度.html')
def test_scatter_option(patched): patched.return_value = "1" v1 = [10, 20, 30, 40, 50, 60] v2 = [10, 20, 30, 40, 50, 60] scatter = Scatter("scatter test") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2) actual_options = json.dumps(scatter.options, sort_keys=True, indent=4, cls=DefaultJsonEncoder) expected = get_fixture_content("scatter_options.json") for a, b in zip(actual_options.split("\n"), expected.split("\n")): eq_(a.strip(), b.strip())
def test_overlap_es_scatter(): v1 = [10, 20, 30, 40, 50, 60] v2 = [30, 30, 30, 30, 30, 30] v3 = [50, 50, 50, 50, 50, 50] v4 = [10, 10, 10, 10, 10, 10] es = EffectScatter("Scatter-EffectScatter 示例") es.add("es", v1, v2) scatter = Scatter() scatter.add("scatter", v1, v3) es_1 = EffectScatter() es_1.add("es_1", v1, v4, symbol='pin', effect_scale=5) overlap = Overlap() overlap.add(es) overlap.add(scatter) overlap.add(es_1) overlap.render()
def test_scatter_draw_sexy_black_bra(): scatter = Scatter("散点图示例", width=1000, height=480) v1, v2 = scatter.draw("../images/cup.png") scatter.add("Cup", v1, v2, label_color=["#000"]) scatter.render()
def test_page_grid_timeline_overlap(): # Grid v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%") bar.add("商家A", CLOTHES, v1, is_stack=True) bar.add("商家B", CLOTHES, v2, is_stack=True, legend_pos="80%") line = Line("折线图示例") line.add( "最高气温", WEEK, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], ) line.add( "最低气温", WEEK, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%", ) v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add( "es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%", ) grid = Grid() grid.add(bar, grid_bottom="60%", grid_left="60%") grid.add(line, grid_bottom="60%", grid_right="60%") grid.add(scatter, grid_top="60%", grid_left="60%") grid.add(es, grid_top="60%", grid_right="60%") # Timeline bar_1 = Bar("2012 年销量", "数据纯属虚构") bar_1.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_1.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_1.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_1.add("冬季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_2 = Bar("2013 年销量", "数据纯属虚构") bar_2.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_2.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_2.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_2.add("冬季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_3 = Bar("2014 年销量", "数据纯属虚构") bar_3.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_3.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_3.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_3.add("冬季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_4 = Bar("2015 年销量", "数据纯属虚构") bar_4.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_4.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_4.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_4.add("冬季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_5 = Bar("2016 年销量", "数据纯属虚构", height=720, width=1200) bar_5.add("春季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_5.add("夏季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_5.add("秋季", CLOTHES, [randint(10, 100) for _ in range(6)]) bar_5.add( "冬季", CLOTHES, [randint(10, 100) for _ in range(6)], is_legend_show=True, ) timeline = Timeline(is_auto_play=True, timeline_bottom=0) timeline.add(bar_1, "2012 年") timeline.add(bar_2, "2013 年") timeline.add(bar_3, "2014 年") timeline.add(bar_4, "2015 年") timeline.add(bar_5, "2016 年") # Overlap attr = ["{}月".format(i) for i in range(1, 13)] v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3] v3 = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2] bar = Bar(height=720, width=1200) bar.add("蒸发量", attr, v1) bar.add("降水量", attr, v2, yaxis_formatter=" ml", yaxis_max=250) line = Line() line.add("平均温度", attr, v3, yaxis_formatter=" °C") overlap = Overlap() overlap.add(bar) overlap.add(line, yaxis_index=1, is_add_yaxis=True) page = Page() page.add(grid) page.add(timeline) page.add(overlap) page.render()
def test_scatter_markline_coords(): scatter = Scatter("散点图示例") scatter.add("A", v1, v2, mark_line_coords=[[10, 10], [30, 30]]) assert '"coord": [' in scatter._repr_html_()
def test_scatter_visualmap_default(): scatter = Scatter("散点图示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2, is_visualmap=True) scatter.render()
'legend_top': 'center', 'is_datazoom_show': True, 'datazoom_type': 'both', 'datazoom_range':[0,40], } total_num = 0 for i in genre: total_num += len(genre[i]['rate']) # print(i) # print(len(genre[i]['boxoffice']), genre[i]['boxoffice']) # print(len(genre[i]['rate']), genre[i]['rate']) # print(len(genre[i]['title']), genre[i]['title']) # print(len(genre[i]['rate_quantity']), genre[i]['rate_quantity']) # print('===============================') scatter.add(i, genre[i]['boxoffice'], genre[i]['rate'], **other_setting, extra_name=genre[i]['title'], xaxis_name='票房(亿)', yaxis_name='评分', yaxis_name_gap=20,yaxis_min=2, symbol_size=5, label_formatter='{c}', is_label_emphasis=True, is_toolbox_show=False)# xaxis_name_gap=80, print('该图电影总数',total_num) scatter#.render('电影评分-票房.html') # 上图是 电影豆瓣评分-票房 散点图,用点的颜色表现了不同电影类型,包括了2018年国内上映电影中同时有豆瓣评分和票房数据的291部。 # # 由于很多类型的电影数量较少,因此将部分类型定为‘其它’。一部电影通常具有多个类型,在分析时,电影类型的确定方法为:按照每一部电影豆瓣上类型的先后顺序,选择顺序最前且不是‘其它’类型的类型;若该电影所有类型都在‘其它’类型中,将此电影归类为其它。 # # 电影票房较高,超过10亿时,其豆瓣评分都在五分及以上;而电影票房较少的电影(小于1亿)豆瓣评分和票房基本无关。 # In[10]: count = 0
def test_scatter_draw__hot_red_bra(): scatter = Scatter("散点图示例", width=1000, height=480) v1, v2 = scatter.draw("../images/cup.png") scatter.add("Cup", v1, v2) scatter.render()
def test_grid(): # grid_0 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, is_grid=True) bar.add("商家A", attr, v1, is_stack=True, grid_bottom="60%") bar.add("商家B", attr, v2, is_stack=True, grid_bottom="60%") line = Line("折线图示例", title_top="50%") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_top="50%") bar.grid(line.get_series(), grid_top="60%") bar.show_config() bar.render() # grid_1 v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter(width=1200, is_grid=True) scatter.add("散点图示例", v1, v2, grid_left="60%", legend_pos="70%") es = EffectScatter() es.add("动态散点图示例", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_pos="20%") scatter.grid(es.get_series(), grid_right="60%") scatter.show_config() scatter.render() # grid_2 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", height=720, width=1200, title_pos="65%", is_grid=True) bar.add("商家A", attr, v1, is_stack=True, grid_bottom="60%", grid_left="60%") bar.add("商家B", attr, v2, is_stack=True, grid_bottom="60%", grid_left="60%", legend_pos="80%") line = Line("折线图示例") attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"]) line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] scatter = Scatter("散点图示例", title_top="50%", title_pos="65%") scatter.add("scatter", v1, v2, legend_top="50%", legend_pos="80%") es = EffectScatter("动态散点图示例", title_top="50%") es.add("es", [11, 11, 15, 13, 12, 13, 10], [1, -2, 2, 5, 3, 2, 0], effect_scale=6, legend_top="50%", legend_pos="20%") bar.grid(line.get_series(), grid_bottom="60%", grid_right="60%") bar.grid(scatter.get_series(), grid_top="60%", grid_left="60%") bar.grid(es.get_series(), grid_top="60%", grid_right="60%") bar.show_config() bar.render() # grid_3 line = Line("折线图示例", width=1200, is_grid=True) attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], grid_right="65%") line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图示例", title_pos="45%") pie.add("", attr, v1, radius=[30, 55], legend_pos="65%", legend_orient='vertical') line.grid(pie.get_series(), grid_left="60%") line.show_config() line.render() # grid_4 line = Line("折线图示例", width=1200, is_grid=True) attr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] line.add("最高气温", attr, [11, 11, 15, 13, 12, 13, 10], mark_point=["max", "min"], mark_line=["average"], grid_right="60%") line.add("最低气温", attr, [1, -2, 2, 5, 3, 2, 0], mark_point=["max", "min"], mark_line=["average"], legend_pos="20%", grid_right="60%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] value = [20, 40, 60, 80, 100, 120] v1 = [[2320.26, 2320.26, 2287.3, 2362.94], [2300, 2291.3, 2288.26, 2308.38], [2295.35, 2346.5, 2295.35, 2345.92], [2347.22, 2358.98, 2337.35, 2363.8], [2360.75, 2382.48, 2347.89, 2383.76], [2383.43, 2385.42, 2371.23, 2391.82], [2377.41, 2419.02, 2369.57, 2421.15], [2425.92, 2428.15, 2417.58, 2440.38], [2411, 2433.13, 2403.3, 2437.42], [2432.68, 2334.48, 2427.7, 2441.73], [2430.69, 2418.53, 2394.22, 2433.89], [2416.62, 2432.4, 2414.4, 2443.03], [2441.91, 2421.56, 2418.43, 2444.8], [2420.26, 2382.91, 2373.53, 2427.07], [2383.49, 2397.18, 2370.61, 2397.94], [2378.82, 2325.95, 2309.17, 2378.82], [2322.94, 2314.16, 2308.76, 2330.88], [2320.62, 2325.82, 2315.01, 2338.78], [2313.74, 2293.34, 2289.89, 2340.71], [2297.77, 2313.22, 2292.03, 2324.63], [2322.32, 2365.59, 2308.92, 2366.16], [2364.54, 2359.51, 2330.86, 2369.65], [2332.08, 2273.4, 2259.25, 2333.54], [2274.81, 2326.31, 2270.1, 2328.14], [2333.61, 2347.18, 2321.6, 2351.44], [2340.44, 2324.29, 2304.27, 2352.02], [2326.42, 2318.61, 2314.59, 2333.67], [2314.68, 2310.59, 2296.58, 2320.96], [2309.16, 2286.6, 2264.83, 2333.29], [2282.17, 2263.97, 2253.25, 2286.33], [2255.77, 2270.28, 2253.31, 2276.22]] kline = Kline("K 线图示例", title_pos="60%") kline.add("日K", ["2017/7/{}".format(i + 1) for i in range(31)], v1, legend_pos="80%") line.grid(kline.get_series(), grid_left="55%") line.show_config() line.render() # grid_5 import random x_axis = ["12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a", "12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p"] y_aixs = ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"] data = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)] heatmap = HeatMap("热力图示例", height=700, is_grid=True) heatmap.add("热力图直角坐标系", x_axis, y_aixs, data, is_visualmap=True, visual_top="45%", visual_text_color="#000", visual_orient='horizontal', grid_bottom="60%") attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [5, 20, 36, 10, 75, 90] v2 = [10, 25, 8, 60, 20, 80] bar = Bar("柱状图示例", title_top="52%") bar.add("商家A", attr, v1, is_stack=True) bar.add("商家B", attr, v2, is_stack=True, legend_top="50%") heatmap.grid(bar.get_series(), grid_top="60%") heatmap.show_config() heatmap.render()
def test_scatter(): # scatter_0 v1 = [10, 20, 30, 40, 50, 60] v2 = [10, 20, 30, 40, 50, 60] scatter = Scatter("散点图示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2) scatter.show_config() scatter.render() # scatter_0_1 scatter = Scatter("散点图示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2, is_visualmap=True) scatter.show_config() scatter.render() # scatter_0_2 scatter = Scatter("散点图示例") scatter.add("A", v1, v2) scatter.add("B", v1[::-1], v2, is_visualmap=True, visual_type='size', visual_range_size=[20, 80]) scatter.show_config() scatter.render() # scatter_1 scatter = Scatter("散点图示例") v1, v2 = scatter.draw("../images/pyecharts-0.png") scatter.add("pyecharts", v1, v2, is_random=True) scatter.show_config() scatter.render() # scatter_2 scatter = Scatter("散点图示例", width=800, height=480) v1, v2 = scatter.draw("../images/love.png") scatter.add("Love", v1, v2) scatter.render() # scatter_3 scatter = Scatter("散点图示例", width=1000, height=480) v1, v2 = scatter.draw("../images/cup.png") scatter.add("Cup", v1, v2) scatter.render() # scatter_4 scatter = Scatter("散点图示例", width=1000, height=480) v1, v2 = scatter.draw("../images/cup.png") scatter.add("Cup", v1, v2, label_color=["#000"]) scatter.render()
def test_scatter_draw_pyecharts(): scatter = Scatter("散点图示例") v1, v2 = scatter.draw("../images/pyecharts-0.png") scatter.add("pyecharts", v1, v2, is_random=True) scatter.render()
#散点图适合表现大量样本的多个属性的分布规律。散点图的每个点表示一个样本,每个坐标维度表示一个属性。 from pyecharts import Scatter import pandas as pd dfboy = pd.DataFrame() dfboy['weight'] = [56,67,65,70,57,60,80,85,76,64] dfboy['height'] = [162,170,168,172,168,172,180,176,178,170] dfgirl = pd.DataFrame() dfgirl['weight'] = [50,62,60,70,57,45,62,65,70,56] dfgirl['height'] = [155,162,165,170,166,158,160,170,172,165] scatter = Scatter(title = "体格数据",width = 600,height = 420) scatter.add(name = "boy", x_axis = dfboy['weight'], y_axis = dfboy['height']) scatter.add(name = "girl", x_axis = dfgirl['weight'], y_axis = dfgirl['height'], yaxis_min = 130,yaxis_max = 200,xaxis_min = 30,xaxis_max = 100) scatter.render("result.散点图示范.html") scatter #当样本属性维度多于2个时,散点图可以使用点的颜色或大小等方式来表达更多属性维度。下面示范使用点的大小表示第3个维度。 def custom_formatter(params): return (params.value[3] + ':' + str(params.value[0]) +',' +str(params.value[1]) + ',' +str(params.value[2])) df = pd.DataFrame()
def test_scatter_draw_love(): scatter = Scatter("散点图示例", width=800, height=480) v1, v2 = scatter.draw("../images/love.png") scatter.add("Love", v1, v2) scatter.render()