def generate_map(): data = get_city_data('friend.json') map = Map( "微信好友", "热力图", title_color="#fff", title_pos="center", width=600, height=500, background_color="#404a59", ) # geo.use_theme('dark') attr, value = map.cast(data) map.add( "", attr, value, maptype="china", visual_range=[0, 200], visual_text_color="#fff", symbol_size=15, is_visualmap=True, # is_label_show=True ) map.render('map.html') map.render(path='map.png')
def gen_zwyx_dd(zwlb): qs = ZpZwByAreaModel.objects if zwlb: qs = qs.filter(zwlb=zwlb) path = f'zwyx_dd/{zwlb}.html' else: path = 'zwyx_dd.html' page = Page() df = read_frame(qs.all()) if len(df) > 0: df_group = df.groupby(['year', 'month']) time_line_chart1 = Timeline(width=1500, height=450, is_auto_play=False, timeline_bottom=0) time_line_chart2 = Timeline(width=1500, height=450, is_auto_play=False, timeline_bottom=0) for name, group in df_group: # 地图 平均薪资 month = group['month'].tolist()[0] year = group['year'].tolist()[0] df_new = group.groupby('province').apply( get_echarts_all_by_zwyx_value, 'province') data = [ (a, (b + c) / 2) for a, b, c in zip(df_new['province'].tolist( ), df_new['max_zwyx'].tolist(), df_new['min_zwyx'].tolist()) ] chart = Map(f'{zwlb}平均职位月薪与地点', width=1500, height=450) attr, value = chart.cast(data) chart.add(f'平均薪资', attr, value, wmaptype='china', is_label_show=True, is_visualmap=True, visual_range=[int(min(value)), int(max(value))], visual_pos='right', visual_top='top') time_line_chart1.add(chart, f'{year}年{month}月') # 本月职位量Top20 chart3 = Pie(f'{zwlb}职位量及招聘人数', width=1500) chart3.add('职位量', df_new['province'].tolist(), df_new['count'].tolist(), center=[25, 50], is_label_show=True) chart3.add('招聘人数', df_new['province'].tolist(), df_new['zprs'].tolist(), center=[75, 50], is_label_show=True) time_line_chart2.add(chart3, f'{year}年{month}月') page.add(time_line_chart1) page.add(time_line_chart2) page.render(os.path.join(BASE_DIR, 'templates/{}'.format(path)))
def map_qgtd(attr_v1: List[Tuple[str, int]], chart_name: str, v1_name: str) -> map.Map: style = Style(width=WIDTH, height=HEIGHT) chart = Map(chart_name, **style.init_style) attr, value = chart.cast(attr_v1) chart.add(v1_name, attr, value, maptype='china', is_visualmap=True, visual_text_color='#000') return chart
def city_dist(info): grouped = info.groupby(['cityChn']) grouped_city = grouped['cityChn'] city_com = grouped_city.agg(['count']) city_com.reset_index(inplace=True) city_distribute_data = [(city_com['cityChn'][i], city_com['count'][i]) for i in range(0, city_com.shape[0])] map = Map('北京征婚小姐姐分布', width=1200, height=600) attr, value = map.cast(city_distribute_data) attr = [loc[2:] + '区' for loc in attr] # 命名规则与pyecharts中名字一致 map.add("密度", attr, value, maptype='北京', is_map_symbol_show=True, is_visualmap=True, visual_text_color='#000', visual_range=[0, 2000]) map.show_config() map.render('北京征婚小姐姐分布.html')
#!/usr/bin/env python # -*- coding: utf-8 -*- import itchat from pyecharts import Map from collections import Counter itchat.auto_login(hotReload=True) myFriendList = itchat.get_friends() provinceCounter = Counter() for friend in myFriendList: province = friend['Province'] if province != '': provinceCounter[province] += 1 myMap = Map('你的微信好友地区分布图', width=1200, height=600, title_pos='center') attr, value = myMap.cast(provinceCounter) myMap.add('', attr, value, maptype='china', is_visualmap=True, is_label_show=True, visual_range=[0, 80]) myMap.render('./你的微信好友地区分布图.html')
from pyecharts import Bar, Line, Overlap bar = Bar("历年报考人数与出生人数") bar.add("报考人数",arr[::-1,0] , arr[::-1,1]) bar.add("出生人数",arr[::-1,0] , list_born) bar # In[59]: from pyecharts import Map data_prov = [('北京', 6.3), ('重庆', 25), ('上海', 5), ('天津', 5.5), ('河南', 98.38), ('广东', 75.8), ('山东', 59.2), ('安徽', 49.9), ('四川', 62), ('江苏', 33.15), ('河北', 48.64), ('湖北', 37.4), ('陕西', 31.9), ('湖南', 45.18), ('山西', 30.5), ('浙江', 30.6), ('甘肃', 27.3), ('广西', 40), ('江西', 38), ('福建', 20.09), ('辽宁', 18.5), ('贵州', 44), ('云南', 30), ('黑龙江', 19.04), ('内蒙古', 19.5), ('吉林', 15.03), ('新疆', 20.74), ('宁夏', 6.95), ('海南', 5.88), ('青海', 4), ('西藏', 2.53)] geo = Map("2018各省高考报名人数") attr, value = geo.cast(data_prov) geo.add("", attr, value, visual_range=[0, 80], is_visualmap=True, is_map_symbol_show=False) geo # In[48]: data_prov_ad = [('湖南', 11.2), ('江西', 10.4), ('安徽', 14.2), ('广东', 11.2), ('河北', 14.55), ('湖北', 15.8), ('河南', 7.8), ('山西', 9.8), ('福建', 18.7), ('吉林', 12.4), ('重庆', 11.5), ('辽宁', 16.1), ('内蒙古', 14.03), ('甘肃', 15.22), ('黑龙江', 13.5), ('陕西', 14.6), ('宁夏', 19), ('新疆', 12.86), ('西藏', 11), ('青海', 15.2), ('四川', 10.6), ('云南', 10.85), ('广西', 8.44), ('贵州', 14.50), ('北京', 30.5), ('江苏', 12.10), ('山东', 10.6), ('天津', 24.1), ('上海', 21.8), ('浙江', 14)] geo = Map("2018各省一本录取率") attr, value = geo.cast(data_prov_ad) geo.add("", attr, value, visual_range=[8, 20], is_visualmap=True, is_map_symbol_show=False) geo # In[ ]:
#地理分布分析 loc_version = df['省份'].value_counts() provinces = list(loc_version.index) province_data = [] for province in provinces: province_data.append((province, loc_version[province])) maps = Map("40年100人分布省份", "data from Xinhua Net", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59') attr, value = maps.cast(province_data) maps.add("", attr, value, type="effectScatter", visual_range=[0, 15], visual_text_color="#fff", symbol_size=15, is_visualmap=True) maps.show_config() maps.render() #年代分布分析 df['出生年月'] = pd.to_datetime(df['出生年月']) df_date = df.set_index('出生年月')
import re import time from lxml import html from selenium import webdriver from pyecharts import Map, Bar, Pie r = requests.get(url='http://www.sohu.com/a/223885358_118392') # 最基本的GET请求 time.sleep(60) html = r.text content = re.findall( u'<p>([\u2E80-\u9FFF]{2,3})[u"市"u"省"u"特"u"壮"u"回"u"维"u"自"u"人"].{0,6}\uff08(\d*)\u540d\uff09 </p>.*?<p>(.*?)</p>', html, re.S) data = [_[0:2] for _ in content] print(data) map = Map("人大代表分布", title_pos="center", width=800, height=500) attr, value = map.cast(data) attr[-1] = u"南海诸岛" map.add("", attr, value, maptype='china', is_label_show=True, label_pos="inside", label_text_color="#000", is_visualmap=True, visual_text_color='#000', visual_range=[12, 172], visual_range_text=['低', '高'], visual_pos=[500, 500]) # map.show_config() map.render()
自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。下面介绍如何安装。 全球国家地图: echarts-countries-pypkg (1.9MB): 世界地图和 213 个国家,包括中国地图 中国省级地图: echarts-china-provinces-pypkg (730KB):23 个省,5 个自治区 中国市级地图: echarts-china-cities-pypkg (3.8MB):370 个中国城市:https://github.com/echarts-maps/echarts-china-cities-js pip install echarts-countries-pypkg pip install echarts-china-provinces-pypkg pip install echarts-china-cities-pypkg 别注明,中国地图在 echarts-countries-pypkg 里。 """ snd_price = list( zip( snd.price.groupby(snd.dist_name).mean().index, snd.price.groupby(snd.dist_name).mean().values)) attr, value = Map.cast(snd_price) min_ = snd.price.groupby(snd.dist).mean().min() max_ = snd.price.groupby(snd.dist).mean().max() price_map = Map('北京各区房价', width=1200, height=600) price_map.add('', attr, value, maptype='北京', is_visualmap=True, visual_range=[min_, max_], visual_text_color='#000', is_label_show=True) price_map.render() #生成render.html在当前目录 #%%
citysJson), city_com['count'][i]) for i in range(0, city_com.shape[0])] data_map_list = {} for item in data_map_all: if data_map_list.has_key(item[0]): value = data_map_list[item[0]] value += item[1] data_map_list[item[0]] = value else: data_map_list[item[0]] = item[1] data_map = [(realKeys(key), data_map_list[key]) for key in data_map_list.keys()] geo = Map("城市评论数", width=1200, height=800, title_pos="center") while True: try: attr, val = geo.cast(data_map) geo.add( "", attr, val, visual_range=[0, 6000], visual_text_color="#fff", symbol_size=5, is_visualmap=True, maptype=u'china', is_map_symbol_show=False, is_label_show=True, is_roam=False, # visual_split_number=4 )
bar # In[59]: from pyecharts import Map data_prov = [('北京', 6.3), ('重庆', 25), ('上海', 5), ('天津', 5.5), ('河南', 98.38), ('广东', 75.8), ('山东', 59.2), ('安徽', 49.9), ('四川', 62), ('江苏', 33.15), ('河北', 48.64), ('湖北', 37.4), ('陕西', 31.9), ('湖南', 45.18), ('山西', 30.5), ('浙江', 30.6), ('甘肃', 27.3), ('广西', 40), ('江西', 38), ('福建', 20.09), ('辽宁', 18.5), ('贵州', 44), ('云南', 30), ('黑龙江', 19.04), ('内蒙古', 19.5), ('吉林', 15.03), ('新疆', 20.74), ('宁夏', 6.95), ('海南', 5.88), ('青海', 4), ('西藏', 2.53)] geo = Map("2018各省高考报名人数") attr, value = geo.cast(data_prov) geo.add("", attr, value, visual_range=[0, 80], is_visualmap=True, is_map_symbol_show=False) geo # In[48]: data_prov_ad = [('湖南', 11.2), ('江西', 10.4), ('安徽', 14.2), ('广东', 11.2), ('河北', 14.55), ('湖北', 15.8), ('河南', 7.8), ('山西', 9.8), ('福建', 18.7), ('吉林', 12.4), ('重庆', 11.5), ('辽宁', 16.1), ('内蒙古', 14.03), ('甘肃', 15.22), ('黑龙江', 13.5), ('陕西', 14.6), ('宁夏', 19), ('新疆', 12.86), ('西藏', 11), ('青海', 15.2),