from pyecharts import Line, Pie, Grid, Bar from get_data import get_city_data data = get_city_data('friend.json') bar = Bar("柱状图", height=720) attr, value = bar.cast(data) bar.add("微信好友", attr, value) line = Line("折线图", height=720, title_top="50%") line.add("", attr, value, line_color='red') grid = Grid() grid.use_theme('dark') grid.add(bar, grid_bottom="60%") grid.add(line, grid_top="60%") grid.render('map2.html') grid.render(path='map2.png') pie = Pie("饼图", title_pos='center') pie.use_theme('dark') pie.add("", attr, value, radius=[40, 75], label_text_color=None, is_label_show=True, legend_orient="vertical", legend_pos="left")
def draw_bar(self, dbName, begDate=None): Beg, End = self.get_date_begin_end() if begDate == None: begDate = Beg[0] maxvalue = get_days(begDate, End[0]) data1 = self.__get_draw_bar_data_core__(dbName, begDate, ('<', 50)) dataBase = self.__get_draw_bar_data_core__(dbName, begDate, ('<', 100)) data3 = self.__get_draw_bar_data_core__(dbName, begDate, ('<', 150), ('>=', 100)) #轻度 data4 = self.__get_draw_bar_data_core__(dbName, begDate, ('<', 200), ('>=', 150)) data5 = self.__get_draw_bar_data_core__(dbName, begDate, ('<', 300), ('>=', 200)) data6 = self.__get_draw_bar_data_core__(dbName, begDate, ('>=', 300)) count = max(len(data1), len(dataBase), len(data3), len(data4), len(data5), len(data6)) # print(len(data1),len(dataBase),len(data3),len(data4),len(data5),len(data6)) valueBase, nameBase = self.__get_value_name_bar__(dataBase, count) def __re_arrange(count, nameBase, dataInput): valuetemp = count * [0] idx = 0 for item in nameBase: for i in dataInput: if item == i[1]: valuetemp[idx] = i[0] break idx = idx + 1 return valuetemp def label_formatter(params): return params.name + ' ' + str(params.value) + '%' grid = Grid(**style2.init_style) grid.use_theme("dark") bar = Bar("", **style1.init_style) value1 = __re_arrange(count, nameBase, data1) bar.add("优", nameBase[:-1], value1[:-1], is_stack=True) # list(map(lambda x: x[0]-x[1], zip(valueBase, valuetemp))) bar.add("良", nameBase[:-1], list( map(lambda x: x[0] - x[1] - x[2], zip(valueBase[:-1], value1[:-1], count * [3]))), is_stack=True) value3 = __re_arrange(count, nameBase, data3) bar.add("轻度污染", nameBase[:-1], value3[:-1], is_stack=True) value4 = __re_arrange(count, nameBase, data4) bar.add("中度污染", nameBase[:-1], value4[:-1], is_stack=True) value5 = __re_arrange(count, nameBase, data5) bar.add("重度污染", nameBase[:-1], value5[:-1], is_stack=True) value6 = __re_arrange(count, nameBase, data6) bar.add( "严重污染", nameBase[:-1], value6[:-1], is_stack=True, # yaxis_name="天", # yaxis_name_size='16', # yaxis_name_gap='25', # yaxis_name_pos='top', xaxis_type="category", xaxis_interval=0, yaxis_interval=0, xaxis_pos='top', yaxis_max=maxvalue, # is_label_show=True, #bar_category_gap="30%", xaxis_label_textsize=12, yaxis_label_textsize=12, xaxis_rotate=90, yaxis_rotate=90, # label_formatter=label_formatter, is_legend_show=True, legend_pos='91%', legend_top='center', legend_orient='horizontal', label_pos='bottom', label_text_size=16, label_color=[ '#43CE17', '#EFDC31', '#FFAA00', '#FF401A', '#D20040', '#9C0A4E' ]) idxList = [str(x) for x in range(1, len(valueBase))] line = Line() meanList = len(idxList) * [sum(valueBase[:-1]) / len(idxList)] line.add("", idxList, meanList, line_width=3, symbol=None, line_color='#0078D7', mark_line=["average"]) line.add("", idxList, valueBase[:-1], is_smooth=True, symbol=None, line_width=3, xaxis_label_textsize=16, xaxis_rotate=90, line_color='#FF401A') overlap = Overlap() overlap.add(bar) overlap.add(line, is_add_xaxis=True, xaxis_index=1) grid.add(overlap, grid_top="21%") grid.render() grid.render("最优城市排行榜.jpeg") #低于均值城市的饼状图 lowThanMeanDic = {} for v in nameBase[-101:-1]: # if v < meanList[0]: key = v.split('-')[1] if key in lowThanMeanDic.keys(): lowThanMeanDic[key] = lowThanMeanDic[key] + 1 else: lowThanMeanDic[key] = 1 data = self.__sort_by_value__(lowThanMeanDic) value, name = self.__get_value_name_bar__(data, len(data)) pie = Pie() pie.use_theme("dark") pie.add("", name, value, is_legend_show=False, is_label_show=True, label_text_size=10) pie.render("最污百城省份分布.jpeg")