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')
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')
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')
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')
bar3 = Bar("水平显示")
bar3.add('商家A', attr, v1)
bar3.add('商家B', attr, v2, is_convert=True)
bar3.render(path='./picture/02-01柱形图3-03水平柱形图.html')
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')
# 阶梯折线图
line2 = Line('阶梯折线图')
line2.add('商家A', attr, v1, is_step=True, is_label_show=True)
line2.render(path='./picture/02-02折线图-02阶梯折线图.html')
# 面积折线图
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'