Echarts是一個(gè)由百度開(kāi)源的數(shù)據(jù)可視化工具累提,憑借著良好的交互性,精巧的圖表設(shè)計(jì)压昼,得到了眾多開(kāi)發(fā)者的認(rèn)可求冷。而 Python 是一門(mén)富有表達(dá)力的語(yǔ)言瘤运,很適合用于數(shù)據(jù)處理。當(dāng)數(shù)據(jù)分析遇上數(shù)據(jù)可視化時(shí)匠题,pyecharts誕生啦拯坟。
盡管python有自帶的matplotlib、seaborn等畫(huà)圖模塊韭山,但其繪制出來(lái)的是靜態(tài)圖郁季,而pyecharts可以繪制出非常棒的動(dòng)態(tài)效果圖,果斷入坑钱磅!
#關(guān)于一些函數(shù)的說(shuō)明
- add() 用于添加圖表的數(shù)據(jù)和設(shè)置各種配置項(xiàng)
- show_config() 打印輸出圖表的所有配置項(xiàng)
- render() 生成 .html 文件
- 支持保存做種格式
- 對(duì)象.render(path='snapshot.html')
- 對(duì)象.render(path='snapshot.png')
- 對(duì)象.render(path='snapshot.pdf')
1梦裂、詞云圖
1.1 英文詞云
from pyecharts import WordCloud
name =['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World', 'Charter Communications', 'Chick Fil A', 'Planet Fitness', 'Pitch Perfect', 'Express', 'Home', 'Johnny Depp', 'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary Ellen Mark', 'Farrah Abraham', 'Rita Ora', 'Serena Williams', 'NCAA baseball tournament', 'Point Break']
value =[10000, 6181, 4386, 4055, 2467, 2244, 1898, 1484, 1112, 965, 847, 582, 555, 550, 462, 366, 360, 282, 273, 265]
wordcloud =WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
#wordcloud.show_config()
wordcloud.render(path='./picture/01-詞云1-權(quán)重詞云.html')
1.png
from pyecharts import WordCloud
wordcloud2 =WordCloud(width=1300, height=620)
wordcloud2.add("", name, value, word_size_range=[30, 100], shape='diamond')
wordcloud2.render(path='./picture/01-詞云2-變形詞云.html')
2.png
1.2 中文詞云
from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
words = ['好看', '不錯(cuò)', '人性', '可以', '值得', '真的', '一部', '感覺(jué)', '喜歡', '一般', '演技', '還是',
'劇情', '一出', '有點(diǎn)', '出好', '好戲', '不是', '沒(méi)有', '非常', '哈哈', '喜劇', '就是', '一個(gè)',
'現(xiàn)實(shí)', '什么', '支持', '還行', '但是', '很多', '覺(jué)得', '搞笑', '值得一看', '故事', '看好',
'這部', '哈哈哈', '失望', '最后', '導(dǎo)演', '自己', '演員', '看完', '社會(huì)', '特別', '看到', '不好',
'比較', '表達(dá)', '那么', '作品', '個(gè)人', '東西', '思考', '這個(gè)', '第一', '不過(guò)', '情節(jié)',
'哈哈哈哈', '意思', '一直', '推薦', '一般般', '時(shí)候', '開(kāi)始', '般般', '片子', '知道', '處女',
'期待', '很棒', '影院', '深度', '反應(yīng)', '無(wú)聊', '可能', '一些', '精彩', '愛(ài)情', '這么', '希望',
'一點(diǎn)', '不知', '有些', '還好', '恐怖', '看著', '沒(méi)看', '還有', '觀看', '后面', '真實(shí)', '因?yàn)?,
'如果', '出來(lái)', '部分', '確實(shí)', '我們', '意義', '深刻']
new_worlds = " ".join(words)
# 參照?qǐng)D片
coloring = np.array(Image.open("./temp6.png"))
# simkai.ttf 必填項(xiàng) 識(shí)別中文的字體,例:simkai.ttf盖淡,
my_wordcloud = WordCloud(background_color="white", max_words=800,
mask=coloring, max_font_size=120, random_state=30, scale=2,font_path="./simhei.ttf").generate(new_worlds)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()
# 保存圖片
my_wordcloud.to_file('./picture/01-詞云3-中文詞云.png')
01-詞云3-中文詞云.png
2年柠、常用統(tǒng)計(jì)圖
from pyecharts import Line, Bar, Pie, EffectScatter
# 數(shù)據(jù)
attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 =[5, 20, 36, 10, 10, 100]
v2 =[55, 60, 16, 20, 15, 80]
2.1 柱形圖
bar = Bar('柱形圖', '庫(kù)存量')
bar.add('服裝', attr, v1, is_label_show=True)
bar.render(path='./picture/02-01柱形圖-01柱形圖.html')
柱形圖.png
bar2 = Bar("顯示標(biāo)記線(xiàn)和標(biāo)記點(diǎn)")
bar2.add('商家A', attr, v1, mark_point=['avgrage'])
bar2.add('商家B', attr, v2, mark_point=['min', 'max'])
bar2.render(path='./picture/02-01柱形圖-02標(biāo)記點(diǎn)柱形圖.html')
顯示標(biāo)記線(xiàn)和標(biāo)記點(diǎn).png
bar3 = Bar("水平顯示")
bar3.add('商家A', attr, v1)
bar3.add('商家B', attr, v2, is_convert=True)
bar3.render(path='./picture/02-01柱形圖3-03水平柱形圖.html')
水平顯示.png
2.2 折線(xiàn)圖
# 普通折線(xiàn)圖
line = Line('折線(xiàn)圖')
line.add('商家A', attr, v1, mark_point=['max'])
line.add('商家B', attr, v2, mark_point=['min'], is_smooth=True)
line.render(path='./picture/02-02折線(xiàn)圖-01折線(xiàn)圖.html')
折線(xiàn)圖.png
# 階梯折線(xiàn)圖
line2 = Line('階梯折線(xiàn)圖')
line2.add('商家A', attr, v1, is_step=True, is_label_show=True)
line2.render(path='./picture/02-02折線(xiàn)圖-02階梯折線(xiàn)圖.html')
階梯折線(xiàn)圖.png
# 面積折線(xiàn)圖
line3 =Line("面積折線(xiàn)圖")
line3.add("商家A", attr, v1, is_fill=True, line_opacity=0.2, area_opacity=0.4, symbol=None, mark_point=['max'])
line3.add("商家B", attr, v2, is_fill=True, area_color='#a3aed5', area_opacity=0.3, is_smooth=True)
line3.render(path='./picture/02-02折線(xiàn)圖-03面積折線(xiàn)圖.html')
面積折線(xiàn)圖.png
2.3 柱形圖-折線(xiàn)圖
from pyecharts import Bar, Line, Overlap
att = ['A', 'B', 'C', 'D', 'E', 'F']
v3 = [10, 20, 30, 40, 50, 60]
v4 = [38, 28, 58, 48, 78, 68]
bar = Bar("柱形圖-折線(xiàn)圖")
bar.add('bar', att, v3)
line = Line()
line.add('line', att, v4)
overlap = Overlap()
overlap.add(bar)
overlap.add(line)
overlap.render(path='./picture/02-03柱形圖-折線(xiàn)圖.html')
柱形圖-折線(xiàn)圖.png
2.4 餅圖
pie = Pie('餅圖')
pie.add('芝麻餅', attr, v1, is_label_show=True)
pie.render(path='./picture/02-04餅圖-01餅圖.html')
餅圖.png
pie2 = Pie("餅圖-玫瑰圖", title_pos='center', width=900)
pie2.add("商品A", attr, v1, center=[25, 50], is_random=True, radius=[30, 75], rosetype='radius')
pie2.add("商品B", attr, v2, center=[75, 50], is_random=True, radius=[30, 75], rosetype='area', is_legend_show=False, is_label_show=True)
pie2.render(path='./picture/02-04餅圖-02玫瑰餅圖.html')
餅圖-玫瑰圖.png
2.5 散點(diǎn)圖
- 靜態(tài)散點(diǎn)圖
from pyecharts import Scatter
# 散點(diǎn)圖
v1 =[10, 20, 30, 40, 50, 60]
v2 =[10, 20, 30, 40, 50, 60]
scatter =Scatter("散點(diǎn)圖示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2)
scatter.render(path='./picture/02-05散點(diǎn)圖-01散點(diǎn)圖.html')
散點(diǎn)圖示例.png
- 動(dòng)態(tài)散點(diǎn)圖
from pyecharts import EffectScatter
attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 =[5, 20, 36, 10, 10, 100]
v2 =[55, 60, 16, 20, 15, 80]
# 動(dòng)態(tài)散點(diǎn)圖
es =EffectScatter("動(dòng)態(tài)散點(diǎn)圖")
es.add("商家", v1, v2)
es.render('./picture/02-05散點(diǎn)圖-03動(dòng)態(tài)散點(diǎn)圖.html')
動(dòng)態(tài)散點(diǎn)圖.png
# 動(dòng)態(tài)散點(diǎn)圖各種圖形
es = EffectScatter("動(dòng)態(tài)散點(diǎn)圖各種圖形")
es.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin")
es.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect")
es.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect")
es.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond")
es.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow")
es.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3,symbol="triangle")
es.render(path = "./picture/02-05散點(diǎn)圖-04動(dòng)態(tài)散點(diǎn)圖各種圖形.html")
動(dòng)態(tài)散點(diǎn)圖各種圖形.png
2.6 多個(gè)餅圖
from pyecharts import Pie
pie =Pie('各類(lèi)電影中"好片"所占的比例', "數(shù)據(jù)來(lái)自豆瓣", title_pos='center')
pie.add("", ["劇情", ""], [25, 75], center=[10, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, )
pie.add("", ["奇幻", ""], [24, 76], center=[30, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, legend_pos='left')
pie.add("", ["愛(ài)情", ""], [14, 86], center=[50, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None)
pie.add("", ["驚悚", ""], [11, 89], center=[70, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None)
pie.add("", ["冒險(xiǎn)", ""], [27, 73], center=[90, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None)
pie.add("", ["動(dòng)作", ""], [15, 85], center=[10, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None)
pie.add("", ["喜劇", ""], [54, 46], center=[30, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None)
pie.add("", ["科幻", ""], [26, 74], center=[50, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None)
pie.add("", ["懸疑", ""], [25, 75], center=[70, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None)
pie.add("", ["犯罪", ""], [28, 72], center=[90, 70], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None, is_legend_show=True, legend_top="center")
pie.render(path='./picture/02-06多個(gè)餅圖.html')
[圖片上傳中...(柱狀圖示例.png-39d171-1579450240964-0)]
2.7 多標(biāo)記柱形圖
from pyecharts import Bar
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]
bar =Bar("柱狀圖示例")
bar.add("蒸發(fā)量", attr, v1, mark_line=["average"], mark_point=["max", "min"])
bar.add("降水量", attr, v2, mark_line=["average"], mark_point=["max", "min"])
bar.render(path='./picture/02-07多標(biāo)記柱形圖.html')
柱狀圖示例.png
3、其他統(tǒng)計(jì)圖
from pyecharts import Funnel, Gauge, Graph
attr =["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]
v1 =[5, 20, 36, 56, 78, 100]
v2 =[55, 60, 16, 20, 15, 80]
3.1 儀表盤(pán)
gauge = Gauge("儀表盤(pán)")
gauge.add('業(yè)務(wù)指標(biāo)', '完成率', 66.66)
gauge.render(path="./picture/03-01儀表盤(pán).html")
儀表盤(pán).png
3.2 漏斗圖
funnel = Funnel('漏斗圖')
funnel.add('商品', attr, v1, is_label_show=True, label_pos='inside', label_text_color="#fff")
funnel.render(path="./picture/03-02漏斗圖.html")
漏斗圖.png
3.3 水球圖
from pyecharts import Liquid, Polar, Radar
liquid =Liquid("水球圖")
liquid.add("Liquid", [0.6])
liquid.render(path='./picture/03-04水球.html')
水球圖.png
# 圓形水球
liquid2 =Liquid("水球圖示例")
liquid2.add("Liquid", [0.6, 0.5, 0.4, 0.3], is_liquid_outline_show=False)
liquid2.render(path='./picture/03-05圓形水球.html')
[圖片上傳中...(水球圖示例-2.png-138824-1579489047969-0)]
# 菱形水球
liquid3 =Liquid("水球圖示例")
liquid3.add("Liquid", [0.6, 0.5, 0.4, 0.3], is_liquid_animation=False, shape='diamond')
liquid3.render(path='./picture/03-06菱形水球.html')
水球圖示例-2.png
3.4 極坐標(biāo)圖
# 極坐標(biāo)
radius =['周一', '周二', '周三', '周四', '周五', '周六', '周日']
polar =Polar("極坐標(biāo)系-堆疊柱狀圖示例", width=1200, height=600)
polar.add("A", [1, 2, 3, 4, 3, 5, 1], radius_data=radius, type='barRadius', is_stack=True)
polar.add("B", [2, 4, 6, 1, 2, 3, 1], radius_data=radius, type='barRadius', is_stack=True)
polar.add("C", [1, 2, 3, 4, 1, 2, 5], radius_data=radius, type='barRadius', is_stack=True)
polar.render(path='./picture/03-07極坐標(biāo).html')
極坐標(biāo)系-堆疊柱狀圖示例.png
3.5 雷達(dá)圖
# 雷達(dá)圖
schema =[ ("銷(xiāo)售", 6500), ("管理", 16000), ("信息技術(shù)", 30000), ("客服", 38000), ("研發(fā)", 52000), ("市場(chǎng)", 25000)]
v1 =[[4300, 10000, 28000, 35000, 50000, 19000]]
v2 =[[5000, 14000, 28000, 31000, 42000, 21000]]
radar =Radar()
radar.config(schema)
radar.add("預(yù)算分配", v1, is_splitline=True, is_axisline_show=True)
radar.add("實(shí)際開(kāi)銷(xiāo)", v2, label_color=["#4e79a7"], is_area_show=False)
radar.render(path='./picture/03-08雷達(dá)圖.html')
echarts-2.png
4褪迟、地圖
# 選擇自己需要的安裝
$ pip install echarts-countries-pypkg
$ pip install echarts-china-provinces-pypkg
$ pip install echarts-china-cities-pypkg
$ pip install echarts-china-counties-pypkg
$ pip install echarts-china-misc-pypkg
$ pip install echarts-united-kingdom-pypkg
from pyecharts import Map, Geo
4.1 世界地圖
# 世界地圖數(shù)據(jù)
value = [95.1, 23.2, 43.3, 66.4, 88.5]
attr= ["China", "Canada", "Brazil", "Russia", "United States"]
map0 = Map("世界地圖示例", width=1200, height=600)
map0.add("世界地圖", attr, value, maptype="world", is_visualmap=True, visual_text_color='#000')
map0.render(path="./picture/04-01世界地圖.html")
世界地圖示例.png
4.2 中國(guó)地圖
# 省和直轄市
province_distribution = {'河南': 45.23, '北京': 37.56, '河北': 21, '遼寧': 12, '江西': 6, '上海': 20, '安徽': 10, '江蘇': 16, '湖南': 9, '浙江': 13, '海南': 2, '廣東': 22, '湖北': 8, '黑龍江': 11, '澳門(mén)': 1, '陜西': 11, '四川': 7, '內(nèi)蒙古': 3, '重慶': 3, '云南': 6, '貴州': 2, '吉林': 3, '山西': 12, '山東': 11, '福建': 4, '青海': 1, '舵主科技冗恨,質(zhì)量保證': 1, '天津': 1, '其他': 1}
provice=list(province_distribution.keys())
values=list(province_distribution.values())
map = Map("中國(guó)地圖",'中國(guó)地圖', width=1200, height=600)
map.add("", provice, values, visual_range=[0, 50], maptype='china', is_visualmap=True,
visual_text_color='#000')
map.render(path="./picture/04-02中國(guó)地圖.html")
中國(guó)地圖.png
4.3 北京地圖
city_keys0= ['豐臺(tái)區(qū)','東城區(qū)','大興區(qū)', '海淀區(qū)', '西城區(qū)' , '朝陽(yáng)區(qū)', '順義區(qū)','平谷區(qū)','石景山區(qū)','昌平區(qū)','密云區(qū)','房山區(qū)','延慶區(qū)','門(mén)頭溝區(qū)','通州區(qū)']
city_values0= [52, 20, 31, 57, 22, 49,5,5,2,5,1,5,3,2,1]
map2 = Map("北京地圖",'北京', width=1200, height=600)
map2.add('北京', city_keys0, city_values0, visual_range=[1, 10], maptype='北京', is_visualmap=True, visual_text_color='#000')
map2.render(path="./picture/04-04北京地圖.html")
北京地圖.png
4.4 空氣質(zhì)量熱力圖
data = [
("海門(mén)", 9),("鄂爾多斯", 12),("招遠(yuǎn)", 12),("舟山", 12),("齊齊哈爾", 14),("鹽城", 15),
("赤峰", 16),("青島", 18),("乳山", 18),("金昌", 19),("泉州", 21),("萊西", 21),
("日照", 21),("膠南", 22),("南通", 23),("拉薩", 24),("云浮", 24),("梅州", 25)]
geo = Geo("全國(guó)主要城市空氣質(zhì)量熱力圖", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("空氣質(zhì)量熱力圖", attr, value, visual_range=[0, 25], type='heatmap',visual_text_color="#fff", symbol_size=15, is_visualmap=True, is_roam=False)
geo.render(path="./picture/04-05空氣質(zhì)量熱力圖.html")
全國(guó)主要城市空氣質(zhì)量熱力圖.png
4.5 空氣質(zhì)量評(píng)分圖
# 空氣質(zhì)量評(píng)分
indexs = ['上海', '北京', '合肥', '哈爾濱', '廣州', '成都', '無(wú)錫', '杭州', '武漢', '深圳', '西安', '鄭州', '重慶', '長(zhǎng)沙']
values = [4.07, 1.85, 4.38, 2.21, 3.53, 4.37, 1.38, 4.29, 4.1, 1.31, 3.92, 4.47, 2.40, 3.60]
geo = Geo("全國(guó)主要城市空氣質(zhì)量評(píng)分", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59')
geo.add("空氣質(zhì)量評(píng)分", indexs, values, type="effectScatter", is_random=True, effect_scale=5, visual_range=[0, 5],visual_text_color="#fff", symbol_size=15, is_visualmap=True, is_roam=False)
geo.render(path="./picture/04-06空氣質(zhì)量評(píng)分.html")
全國(guó)主要城市空氣質(zhì)量評(píng)分.png
4.6 微信好友分布圖
from pyecharts import Geo, Map
province_distribution = {'河南': 45, '北京': 97, '河北': 21, '遼寧': 12, '江西': 6, '上海': 20, '安徽': 10, '江蘇': 16, '湖南': 9, '浙江': 13, '海南': 2, '廣東': 22, '湖北': 8, '黑龍江': 11, '澳門(mén)': 1, '陜西': 11, '四川': 7, '內(nèi)蒙古': 3, '重慶': 3, '云南': 6, '貴州': 2, '吉林': 3, '山西': 12, '山東': 11, '福建': 4, '青海': 1, '舵主科技答憔,質(zhì)量保證': 1, '天津': 1, '其他': 1}
province_keys=province_distribution.keys()
province_values=province_distribution.values()
map = Map("我的微信好友分布", "@ZYH",width=1200, height=600)
map.add("", province_keys, province_values, maptype='china', is_visualmap=True,visual_text_color='#000')
map.render(path="./picture/04-07微信好友分布圖.html")
我的微信好友分布-3.png
4.7 空氣質(zhì)量散點(diǎn)圖
from pyecharts import Geo
data = [
("海門(mén)", 9),("鄂爾多斯", 12),("招遠(yuǎn)", 12),("舟山", 12),("齊齊哈爾", 14),("鹽城", 15),
("赤峰", 16),("青島", 18),("乳山", 18),("金昌", 19),("泉州", 21),("萊西", 21),
("日照", 21),("膠南", 22),("南通", 23),("拉薩", 24),("云浮", 24),("梅州", 25),
("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("廈門(mén)", 26),
("汕尾", 26),("潮州", 26),("丹東", 27),("太倉(cāng)", 27),("曲靖", 27),("煙臺(tái)", 28),
("福州", 29),("瓦房店", 30),("即墨", 30),("撫順", 31),("玉溪", 31),("張家口", 31),
("陽(yáng)泉", 31),("萊州", 32),("湖州", 32),("汕頭", 32),("昆山", 33),("寧波", 33),
("湛江", 33),("揭陽(yáng)", 34),("榮成", 34),("連云港", 35),("葫蘆島", 35),("常熟", 36),
("東莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南寧", 37),("營(yíng)口", 37),
("惠州", 37),("江陰", 37),("蓬萊", 37),("韶關(guān)", 38),("嘉峪關(guān)", 38),("廣州", 38),
("延安", 38),("太原", 39),("清遠(yuǎn)", 39),("中山", 39),("昆明", 39),("壽光", 40),
("盤(pán)錦", 40),("長(zhǎng)治", 41),("深圳", 41),("珠海", 42),("宿遷", 43),("咸陽(yáng)", 43),
("銅川", 44),("平度", 44),("佛山", 44),("海口", 44),("江門(mén)", 45),("章丘", 45),
("肇慶", 46),("大連", 47),("臨汾", 47),("吳江", 47),("石嘴山", 49),("沈陽(yáng)", 50),
("蘇州", 50),("茂名", 50),("嘉興", 51),("長(zhǎng)春", 51),("膠州", 52),("銀川", 52),
("張家港", 52),("三門(mén)峽", 53),("錦州", 54),("南昌", 54),("柳州", 54),("三亞", 54),
("自貢", 56),("吉林", 56),("陽(yáng)江", 57),("瀘州", 57),("西寧", 57),("宜賓", 58),
("呼和浩特", 58),("成都", 58),("大同", 58),("鎮(zhèn)江", 59),("桂林", 59),("張家界", 59),
("宜興", 59),("北海", 60),("西安", 61),("金壇", 62),("東營(yíng)", 62),("牡丹江", 63),
("遵義", 63),("紹興", 63),("揚(yáng)州", 64),("常州", 64),("濰坊", 65),("重慶", 66),
("臺(tái)州", 67),("南京", 67),("濱州", 70),("貴陽(yáng)", 71),("無(wú)錫", 71),("本溪", 71),
("克拉瑪依", 72),("渭南", 72),("馬鞍山", 72),("寶雞", 72),("焦作", 75),("句容", 75),
("北京", 79),("徐州", 79),("衡水", 80),("包頭", 80),("綿陽(yáng)", 80),("烏魯木齊", 84),
("棗莊", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧陽(yáng)", 86),("庫(kù)爾勒", 86),
("安陽(yáng)", 90),("開(kāi)封", 90),("濟(jì)南", 92),("德陽(yáng)", 93),("溫州", 95),("九江", 96),
("邯鄲", 98),("臨安", 99),("蘭州", 99),("滄州", 100),("臨沂", 103),("南充", 104),
("天津", 105),("富陽(yáng)", 106),("泰安", 112),("諸暨", 112),("鄭州", 113),("哈爾濱", 114),
("聊城", 116),("蕪湖", 117),("唐山", 119),("平頂山", 119),("邢臺(tái)", 119),("德州", 120),
("濟(jì)寧", 120),("荊州", 127),("宜昌", 130),("義烏", 132),("麗水", 133),("洛陽(yáng)", 134),
("秦皇島", 136),("株洲", 143),("石家莊", 147),("萊蕪", 148),("常德", 152),("保定", 153),
("湘潭", 154),("金華", 157),("岳陽(yáng)", 169),("長(zhǎng)沙", 175),("衢州", 177),("廊坊", 193),
("菏澤", 194),("合肥", 229),("武漢", 273),("大慶", 279)]
geo = Geo("全國(guó)主要城市空氣質(zhì)量", "data from pm2.5", title_color="#fff",
title_pos="center", width=1200,
height=600, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff",
symbol_size=15, is_visualmap=True)
geo.render(path="./picture/04-08空氣質(zhì)量散點(diǎn)圖.html")
全國(guó)主要城市空氣質(zhì)量.png
4.8 空氣質(zhì)量熱力圖2
from pyecharts import Geo
data = [
("海門(mén)", 9),("鄂爾多斯", 12),("招遠(yuǎn)", 12),("舟山", 12),("齊齊哈爾", 14),("鹽城", 15),
("赤峰", 16),("青島", 18),("乳山", 18),("金昌", 19),("泉州", 21),("萊西", 21),
("日照", 21),("膠南", 22),("南通", 23),("拉薩", 24),("云浮", 24),("梅州", 25),
("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("廈門(mén)", 26),
("汕尾", 26),("潮州", 26),("丹東", 27),("太倉(cāng)", 27),("曲靖", 27),("煙臺(tái)", 28),
("福州", 29),("瓦房店", 30),("即墨", 30),("撫順", 31),("玉溪", 31),("張家口", 31),
("陽(yáng)泉", 31),("萊州", 32),("湖州", 32),("汕頭", 32),("昆山", 33),("寧波", 33),
("湛江", 33),("揭陽(yáng)", 34),("榮成", 34),("連云港", 35),("葫蘆島", 35),("常熟", 36),
("東莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南寧", 37),("營(yíng)口", 37),
("惠州", 37),("江陰", 37),("蓬萊", 37),("韶關(guān)", 38),("嘉峪關(guān)", 38),("廣州", 38),
("延安", 38),("太原", 39),("清遠(yuǎn)", 39),("中山", 39),("昆明", 39),("壽光", 40),
("盤(pán)錦", 40),("長(zhǎng)治", 41),("深圳", 41),("珠海", 42),("宿遷", 43),("咸陽(yáng)", 43),
("銅川", 44),("平度", 44),("佛山", 44),("合颇ǎ口", 44),("江門(mén)", 45),("章丘", 45),
("肇慶", 46),("大連", 47),("臨汾", 47),("吳江", 47),("石嘴山", 49),("沈陽(yáng)", 50),
("蘇州", 50),("茂名", 50),("嘉興", 51),("長(zhǎng)春", 51),("膠州", 52),("銀川", 52),
("張家港", 52),("三門(mén)峽", 53),("錦州", 54),("南昌", 54),("柳州", 54),("三亞", 54),
("自貢", 56),("吉林", 56),("陽(yáng)江", 57),("瀘州", 57),("西寧", 57),("宜賓", 58),
("呼和浩特", 58),("成都", 58),("大同", 58),("鎮(zhèn)江", 59),("桂林", 59),("張家界", 59),
("宜興", 59),("北海", 60),("西安", 61),("金壇", 62),("東營(yíng)", 62),("牡丹江", 63),
("遵義", 63),("紹興", 63),("揚(yáng)州", 64),("常州", 64),("濰坊", 65),("重慶", 66),
("臺(tái)州", 67),("南京", 67),("濱州", 70),("貴陽(yáng)", 71),("無(wú)錫", 71),("本溪", 71),
("克拉瑪依", 72),("渭南", 72),("馬鞍山", 72),("寶雞", 72),("焦作", 75),("句容", 75),
("北京", 79),("徐州", 79),("衡水", 80),("包頭", 80),("綿陽(yáng)", 80),("烏魯木齊", 84),
("棗莊", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧陽(yáng)", 86),("庫(kù)爾勒", 86),
("安陽(yáng)", 90),("開(kāi)封", 90),("濟(jì)南", 92),("德陽(yáng)", 93),("溫州", 95),("九江", 96),
("邯鄲", 98),("臨安", 99),("蘭州", 99),("滄州", 100),("臨沂", 103),("南充", 104),
("天津", 105),("富陽(yáng)", 106),("泰安", 112),("諸暨", 112),("鄭州", 113),("哈爾濱", 114),
("聊城", 116),("蕪湖", 117),("唐山", 119),("平頂山", 119),("邢臺(tái)", 119),("德州", 120),
("濟(jì)寧", 120),("荊州", 127),("宜昌", 130),("義烏", 132),("麗水", 133),("洛陽(yáng)", 134),
("秦皇島", 136),("株洲", 143),("石家莊", 147),("萊蕪", 148),("常德", 152),("保定", 153),
("湘潭", 154),("金華", 157),("岳陽(yáng)", 169),("長(zhǎng)沙", 175),("衢州", 177),("廊坊", 193),
("菏澤", 194),("合肥", 229),("武漢", 273),("大慶", 279)]
geo = Geo("全國(guó)主要城市空氣質(zhì)量", "data from pm2.5", title_color="#fff",
title_pos="center", width=1000,
height=500, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value, type="heatmap", is_visualmap=True, visual_range=[0, 300],
visual_text_color='#fff')
geo.render(path="./picture/04-09空氣質(zhì)量熱力圖2.html")
全國(guó)主要城市空氣質(zhì)量-2.png
4.9 單程航線(xiàn)圖
from pyecharts import GeoLines, Style
style = Style(
title_top="#fff",
title_pos = "center",
width=1000,
height=500,
background_color="#404a59"
)
style_geo = style.add(
is_label_show=True,
line_curve=0.2,#線(xiàn)條曲度
line_opacity=0.6,
legend_text_color="#eee",#圖例文字顏色
legend_pos="right",#圖例位置
geo_effect_symbol="plane",#特效形狀
geo_effect_symbolsize=15,#特效大小
label_color=['#a6c84c', '#ffa022', '#46bee9'],
label_pos="right",
label_formatter="虐拓",#//標(biāo)簽內(nèi)容格式器
label_text_color="#eee",
)
data_guangzhou = [
["廣州", "上海"],
["廣州", "北京"],
["廣州", "南京"],
["廣州", "重慶"],
["廣州", "蘭州"],
["廣州", "杭州"]
]
geolines = GeoLines("GeoLines 示例", **style.init_style)
geolines.add("從廣州出發(fā)", data_guangzhou, **style_geo)
geolines.render(path="./picture/04-10單程航線(xiàn)圖.html")
GeoLines 示例.png
4.10 雙程航線(xiàn)圖
from pyecharts import GeoLines, Style
style = Style(
title_top="#fff",
title_pos = "center",
width=1000,
height=500,
background_color="#404a59"
)
style_geo = style.add(
is_label_show=True,
line_curve=0.2,
line_opacity=0.6,
legend_text_color="#eee",
legend_pos="right",
geo_effect_symbol="plane",
geo_effect_symbolsize=15,
label_color=['#a6c84c', '#ffa022', '#46bee9'],
label_pos="right",
label_formatter="",
label_text_color="#eee",
legend_selectedmode="single", #指定單例模式
)
data_beijing = [
["北京", "上海"],
["北京", "廣州"],
["北京", "南京"],
["北京", "重慶"],
["北京", "蘭州"],
["北京", "杭州"]
]
data_guangzhou = [
["廣州", "上海"],
["廣州", "北京"],
["廣州", "南京"],
["廣州", "重慶"],
["廣州", "蘭州"],
["廣州", "杭州"]
]
geolines = GeoLines("GeoLines 示例", **style.init_style)
geolines.add("從廣州出發(fā)", data_guangzhou, **style_geo)
geolines.add("從北京出發(fā)", data_beijing, **style_geo)
geolines.render(path="./picture/04-11雙程航線(xiàn)圖.html")
GeoLines 示例.png
GeoLines 示例-2.png
參考資料:
官方文檔:https://pyecharts.org
簡(jiǎn)書(shū)作者:Python數(shù)據(jù)分析實(shí)戰(zhàn)