pyecharts数据可视化

孤者浪人 提交于 2020-01-30 07:58:50

Echarts是一个由百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts诞生啦。

尽管python有自带的matplotlib、seaborn等画图模块,但其绘制出来的是静态图,而pyecharts可以绘制出非常棒的动态效果图,果断入坑!

#关于一些函数的说明
- add() 用于添加图表的数据和设置各种配置项
- show_config() 打印输出图表的所有配置项
- render() 生成 .html 文件
- 支持保存做种格式
   - 对象.render(path='snapshot.html')
   - 对象.render(path='snapshot.png')
   - 对象.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-权重词云.html')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n2ZG1Njn-1580301473685)(https://upload-images.jianshu.io/upload_images/1851636-ce22b259e151b76b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

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 = ['好看', '不错', '人性', '可以', '值得', '真的', '一部', '感觉', '喜欢', '一般', '演技', '还是',
   '剧情', '一出', '有点', '出好', '好戏', '不是', '没有', '非常', '哈哈', '喜剧', '就是', '一个',
   '现实', '什么', '支持', '还行', '但是', '很多', '觉得', '搞笑', '值得一看', '故事', '看好',
   '这部', '哈哈哈', '失望', '最后', '导演', '自己', '演员', '看完', '社会', '特别', '看到', '不好',
   '比较', '表达', '那么', '作品', '个人', '东西', '思考', '这个', '第一', '不过', '情节',
   '哈哈哈哈', '意思', '一直', '推荐', '一般般', '时候', '开始', '般般', '片子', '知道', '处女',
   '期待', '很棒', '影院', '深度', '反应', '无聊', '可能', '一些', '精彩', '爱情', '这么', '希望',
   '一点', '不知', '有些', '还好', '恐怖', '看着', '没看', '还有', '观看', '后面', '真实', '因为',
   '如果', '出来', '部分', '确实', '我们', '意义', '深刻']

new_worlds = " ".join(words)
# 参照图片
coloring = np.array(Image.open("./temp6.png"))
# simkai.ttf 必填项 识别中文的字体,例: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、常用统计图

from pyecharts import Line, Bar, Pie, EffectScatter
# 数据
attr =["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 =[5, 20, 36, 10, 10, 100]
v2 =[55, 60, 16, 20, 15, 80]

2.1 柱形图

bar = Bar('柱形图', '库存量')
bar.add('服装', attr, v1,  is_label_show=True)
bar.render(path='./picture/02-01柱形图-01柱形图.html')

柱形图.png

bar2 = Bar("显示标记线和标记点")
bar2.add('商家A', attr, v1, mark_point=['avgrage'])
bar2.add('商家B', attr, v2, mark_point=['min', 'max'])
bar2.render(path='./picture/02-01柱形图-02标记点柱形图.html')

显示标记线和标记点.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 折线图

# 普通折线图
line = Line('折线图')
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折线图-01折线图.html')

折线图.png

# 阶梯折线图
line2 = Line('阶梯折线图')
line2.add('商家A', attr, v1,  is_step=True, is_label_show=True)
line2.render(path='./picture/02-02折线图-02阶梯折线图.html')

阶梯折线图.png

# 面积折线图
line3 =Line("面积折线图")
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折线图-03面积折线图.html')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OHvtoEAu-1580301473698)(https://upload-images.jianshu.io/upload_images/1851636-88814c9d6207277f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

2.3 柱形图-折线图

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("柱形图-折线图")
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柱形图-折线图.html')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RsMkx2wn-1580301473698)(https://upload-images.jianshu.io/upload_images/1851636-ac9095b27ef6b296.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

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')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MGCsspcp-1580301473699)(https://upload-images.jianshu.io/upload_images/1851636-2f6b304b8169641b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

2.5 散点图

  • 静态散点图
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)
scatter.render(path='./picture/02-05散点图-01散点图.html')

散点图示例.png

  • 动态散点图
from pyecharts import EffectScatter
attr =["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 =[5, 20, 36, 10, 10, 100]
v2 =[55, 60, 16, 20, 15, 80]
# 动态散点图
es =EffectScatter("动态散点图")
es.add("商家", v1, v2)
es.render('./picture/02-05散点图-03动态散点图.html')

动态散点图.png

# 动态散点图各种图形
es = EffectScatter("动态散点图各种图形")
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散点图-04动态散点图各种图形.html")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fBmiC504-1580301473702)(https://upload-images.jianshu.io/upload_images/1851636-1e8201a9cabaaa58.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

2.6 多个饼图

from pyecharts import Pie
pie =Pie('各类电影中"好片"所占的比例', "数据来自豆瓣", 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("", ["爱情", ""], [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("", ["冒险", ""], [27, 73], center=[90, 30], radius=[18, 24], label_pos='center', is_label_show=True, label_text_color=None)
pie.add("", ["动作", ""], [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多个饼图.html')

[图片上传中...(柱状图示例.png-39d171-1579450240964-0)]

2.7 多标记柱形图

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("蒸发量", 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多标记柱形图.html')

柱状图示例.png

3、其他统计图

from pyecharts import Funnel, Gauge, Graph
attr =["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 =[5, 20, 36, 56, 78, 100]
v2 =[55, 60, 16, 20, 15, 80]

3.1 仪表盘

gauge = Gauge("仪表盘")
gauge.add('业务指标', '完成率', 66.66)
gauge.render(path="./picture/03-01仪表盘.html")

仪表盘.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')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Rt0vo9X-1580301473704)(https://upload-images.jianshu.io/upload_images/1851636-d37d950ed3969a6a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

# 圆形水球
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')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TK6bD7me-1580301473705)(https://upload-images.jianshu.io/upload_images/1851636-20475ec256e813f3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

3.4 极坐标图

# 极坐标
radius =['周一', '周二', '周三', '周四', '周五', '周六', '周日']
polar =Polar("极坐标系-堆叠柱状图示例", 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极坐标.html')

极坐标系-堆叠柱状图示例.png

3.5 雷达图

# 雷达图
schema =[ ("销售", 6500), ("管理", 16000), ("信息技术", 30000), ("客服", 38000), ("研发", 52000), ("市场", 25000)]
v1 =[[4300, 10000, 28000, 35000, 50000, 19000]]
v2 =[[5000, 14000, 28000, 31000, 42000, 21000]]
radar =Radar()
radar.config(schema)
radar.add("预算分配", v1, is_splitline=True, is_axisline_show=True)
radar.add("实际开销", v2, label_color=["#4e79a7"], is_area_show=False)
radar.render(path='./picture/03-08雷达图.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 世界地图

# 世界地图数据
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")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-871lkNVM-1580301473707)(https://upload-images.jianshu.io/upload_images/1851636-8521b6a85445b519.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

4.2 中国地图

# 省和直辖市
province_distribution = {'河南': 45.23, '北京': 37.56, '河北': 21, '辽宁': 12, '江西': 6, '上海': 20, '安徽': 10, '江苏': 16, '湖南': 9, '浙江': 13, '海南': 2, '广东': 22, '湖北': 8, '黑龙江': 11, '澳门': 1, '陕西': 11, '四川': 7, '内蒙古': 3, '重庆': 3, '云南': 6, '贵州': 2, '吉林': 3, '山西': 12, '山东': 11, '福建': 4, '青海': 1, '舵主科技,质量保证': 1, '天津': 1, '其他': 1}
provice=list(province_distribution.keys())
values=list(province_distribution.values())
map = Map("中国地图",'中国地图', 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中国地图.html")

中国地图.png

4.3 北京地图

city_keys0= ['丰台区','东城区','大兴区', '海淀区', '西城区' , '朝阳区', '顺义区','平谷区','石景山区','昌平区','密云区','房山区','延庆区','门头沟区','通州区']
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 空气质量热力图

data = [
("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),
("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),
("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25)]
geo = Geo("全国主要城市空气质量热力图", "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, 25], type='heatmap',visual_text_color="#fff", symbol_size=15, is_visualmap=True, is_roam=False)
geo.render(path="./picture/04-05空气质量热力图.html")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CMsy4X3g-1580301473708)(https://upload-images.jianshu.io/upload_images/1851636-3592ca462659da6d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

4.5 空气质量评分图

# 空气质量评分
indexs = ['上海', '北京', '合肥', '哈尔滨', '广州', '成都', '无锡', '杭州', '武汉', '深圳', '西安', '郑州', '重庆', '长沙']
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("全国主要城市空气质量评分", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59')
geo.add("空气质量评分", 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空气质量评分.html")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yHGgvi8C-1580301473708)(https://upload-images.jianshu.io/upload_images/1851636-62ca709a9ec9ae58.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

4.6 微信好友分布图

from pyecharts import Geo, Map
province_distribution = {'河南': 45, '北京': 97, '河北': 21, '辽宁': 12, '江西': 6, '上海': 20, '安徽': 10, '江苏': 16, '湖南': 9, '浙江': 13, '海南': 2, '广东': 22, '湖北': 8, '黑龙江': 11, '澳门': 1, '陕西': 11, '四川': 7, '内蒙古': 3, '重庆': 3, '云南': 6, '贵州': 2, '吉林': 3, '山西': 12, '山东': 11, '福建': 4, '青海': 1, '舵主科技,质量保证': 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")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pkkcdMCC-1580301473709)(https://upload-images.jianshu.io/upload_images/1851636-05fd0299ac44e064.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

4.7 空气质量散点图

from pyecharts import Geo
data = [
   ("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),
   ("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),
   ("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25),
   ("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("厦门", 26),
   ("汕尾", 26),("潮州", 26),("丹东", 27),("太仓", 27),("曲靖", 27),("烟台", 28),
   ("福州", 29),("瓦房店", 30),("即墨", 30),("抚顺", 31),("玉溪", 31),("张家口", 31),
   ("阳泉", 31),("莱州", 32),("湖州", 32),("汕头", 32),("昆山", 33),("宁波", 33),
   ("湛江", 33),("揭阳", 34),("荣成", 34),("连云港", 35),("葫芦岛", 35),("常熟", 36),
   ("东莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南宁", 37),("营口", 37),
   ("惠州", 37),("江阴", 37),("蓬莱", 37),("韶关", 38),("嘉峪关", 38),("广州", 38),
   ("延安", 38),("太原", 39),("清远", 39),("中山", 39),("昆明", 39),("寿光", 40),
   ("盘锦", 40),("长治", 41),("深圳", 41),("珠海", 42),("宿迁", 43),("咸阳", 43),
   ("铜川", 44),("平度", 44),("佛山", 44),("海口", 44),("江门", 45),("章丘", 45),
   ("肇庆", 46),("大连", 47),("临汾", 47),("吴江", 47),("石嘴山", 49),("沈阳", 50),
   ("苏州", 50),("茂名", 50),("嘉兴", 51),("长春", 51),("胶州", 52),("银川", 52),
   ("张家港", 52),("三门峡", 53),("锦州", 54),("南昌", 54),("柳州", 54),("三亚", 54),
   ("自贡", 56),("吉林", 56),("阳江", 57),("泸州", 57),("西宁", 57),("宜宾", 58),
   ("呼和浩特", 58),("成都", 58),("大同", 58),("镇江", 59),("桂林", 59),("张家界", 59),
   ("宜兴", 59),("北海", 60),("西安", 61),("金坛", 62),("东营", 62),("牡丹江", 63),
   ("遵义", 63),("绍兴", 63),("扬州", 64),("常州", 64),("潍坊", 65),("重庆", 66),
   ("台州", 67),("南京", 67),("滨州", 70),("贵阳", 71),("无锡", 71),("本溪", 71),
   ("克拉玛依", 72),("渭南", 72),("马鞍山", 72),("宝鸡", 72),("焦作", 75),("句容", 75),
   ("北京", 79),("徐州", 79),("衡水", 80),("包头", 80),("绵阳", 80),("乌鲁木齐", 84),
   ("枣庄", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧阳", 86),("库尔勒", 86),
   ("安阳", 90),("开封", 90),("济南", 92),("德阳", 93),("温州", 95),("九江", 96),
   ("邯郸", 98),("临安", 99),("兰州", 99),("沧州", 100),("临沂", 103),("南充", 104),
   ("天津", 105),("富阳", 106),("泰安", 112),("诸暨", 112),("郑州", 113),("哈尔滨", 114),
   ("聊城", 116),("芜湖", 117),("唐山", 119),("平顶山", 119),("邢台", 119),("德州", 120),
   ("济宁", 120),("荆州", 127),("宜昌", 130),("义乌", 132),("丽水", 133),("洛阳", 134),
   ("秦皇岛", 136),("株洲", 143),("石家庄", 147),("莱芜", 148),("常德", 152),("保定", 153),
   ("湘潭", 154),("金华", 157),("岳阳", 169),("长沙", 175),("衢州", 177),("廊坊", 193),
   ("菏泽", 194),("合肥", 229),("武汉", 273),("大庆", 279)]

geo = Geo("全国主要城市空气质量", "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空气质量散点图.html")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxaI34y2-1580301473709)(https://upload-images.jianshu.io/upload_images/1851636-f3e9b3d744f046be.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

4.8 空气质量热力图2

from pyecharts import Geo

data = [
    ("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),
    ("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),
    ("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25),
    ("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("厦门", 26),
    ("汕尾", 26),("潮州", 26),("丹东", 27),("太仓", 27),("曲靖", 27),("烟台", 28),
    ("福州", 29),("瓦房店", 30),("即墨", 30),("抚顺", 31),("玉溪", 31),("张家口", 31),
    ("阳泉", 31),("莱州", 32),("湖州", 32),("汕头", 32),("昆山", 33),("宁波", 33),
    ("湛江", 33),("揭阳", 34),("荣成", 34),("连云港", 35),("葫芦岛", 35),("常熟", 36),
    ("东莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南宁", 37),("营口", 37),
    ("惠州", 37),("江阴", 37),("蓬莱", 37),("韶关", 38),("嘉峪关", 38),("广州", 38),
    ("延安", 38),("太原", 39),("清远", 39),("中山", 39),("昆明", 39),("寿光", 40),
    ("盘锦", 40),("长治", 41),("深圳", 41),("珠海", 42),("宿迁", 43),("咸阳", 43),
    ("铜川", 44),("平度", 44),("佛山", 44),("海口", 44),("江门", 45),("章丘", 45),
    ("肇庆", 46),("大连", 47),("临汾", 47),("吴江", 47),("石嘴山", 49),("沈阳", 50),
    ("苏州", 50),("茂名", 50),("嘉兴", 51),("长春", 51),("胶州", 52),("银川", 52),
    ("张家港", 52),("三门峡", 53),("锦州", 54),("南昌", 54),("柳州", 54),("三亚", 54),
    ("自贡", 56),("吉林", 56),("阳江", 57),("泸州", 57),("西宁", 57),("宜宾", 58),
    ("呼和浩特", 58),("成都", 58),("大同", 58),("镇江", 59),("桂林", 59),("张家界", 59),
    ("宜兴", 59),("北海", 60),("西安", 61),("金坛", 62),("东营", 62),("牡丹江", 63),
    ("遵义", 63),("绍兴", 63),("扬州", 64),("常州", 64),("潍坊", 65),("重庆", 66),
    ("台州", 67),("南京", 67),("滨州", 70),("贵阳", 71),("无锡", 71),("本溪", 71),
    ("克拉玛依", 72),("渭南", 72),("马鞍山", 72),("宝鸡", 72),("焦作", 75),("句容", 75),
    ("北京", 79),("徐州", 79),("衡水", 80),("包头", 80),("绵阳", 80),("乌鲁木齐", 84),
    ("枣庄", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧阳", 86),("库尔勒", 86),
    ("安阳", 90),("开封", 90),("济南", 92),("德阳", 93),("温州", 95),("九江", 96),
    ("邯郸", 98),("临安", 99),("兰州", 99),("沧州", 100),("临沂", 103),("南充", 104),
    ("天津", 105),("富阳", 106),("泰安", 112),("诸暨", 112),("郑州", 113),("哈尔滨", 114),
    ("聊城", 116),("芜湖", 117),("唐山", 119),("平顶山", 119),("邢台", 119),("德州", 120),
    ("济宁", 120),("荆州", 127),("宜昌", 130),("义乌", 132),("丽水", 133),("洛阳", 134),
    ("秦皇岛", 136),("株洲", 143),("石家庄", 147),("莱芜", 148),("常德", 152),("保定", 153),
    ("湘潭", 154),("金华", 157),("岳阳", 169),("长沙", 175),("衢州", 177),("廊坊", 193),
    ("菏泽", 194),("合肥", 229),("武汉", 273),("大庆", 279)]

geo = Geo("全国主要城市空气质量", "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空气质量热力图2.html")

全国主要城市空气质量-2.png

4.9 单程航线图

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="{b}",#//标签内容格式器
    label_text_color="#eee",
)

data_guangzhou = [
    ["广州", "上海"],
    ["广州", "北京"],
    ["广州", "南京"],
    ["广州", "重庆"],
    ["广州", "兰州"],
    ["广州", "杭州"]
]
geolines = GeoLines("GeoLines 示例", **style.init_style)
geolines.add("从广州出发", data_guangzhou, **style_geo)
geolines.render(path="./picture/04-10单程航线图.html")

GeoLines 示例.png

4.10 双程航线图

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="{b}",
    label_text_color="#eee",
    legend_selectedmode="single", #指定单例模式
)

data_beijing = [
    ["北京", "上海"],
    ["北京", "广州"],
    ["北京", "南京"],
    ["北京", "重庆"],
    ["北京", "兰州"],
    ["北京", "杭州"]
]

data_guangzhou = [
    ["广州", "上海"],
    ["广州", "北京"],
    ["广州", "南京"],
    ["广州", "重庆"],
    ["广州", "兰州"],
    ["广州", "杭州"]
]
geolines = GeoLines("GeoLines 示例", **style.init_style)
geolines.add("从广州出发", data_guangzhou, **style_geo)
geolines.add("从北京出发", data_beijing, **style_geo)
geolines.render(path="./picture/04-11双程航线图.html")

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zVSXi0QL-1580301473711)(https://upload-images.jianshu.io/upload_images/1851636-50fc5947d1f7f8be.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

GeoLines 示例-2.png

参考资料:
官方文档:https://pyecharts.org
简书作者:Python数据分析实战

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!