前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pyecharts新版本食用指南

Pyecharts新版本食用指南

作者头像
老肥码码码
发布2020-01-17 15:28:25
2.3K0
发布2020-01-17 15:28:25
举报
文章被收录于专栏:算法与数据之美

pyecharts是我们用来做数据可视化,且非常实用的Python的第三方库。

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

版本 0.5 已经不再维护,而新版本 V1 是不向下兼容的。

代码风格完全不同,在 V1 版本中,一切皆Options。配置项种类更多,可操作性更强,可以画出更加丰富的图表。

因此,我们完全可以将新版本当作一个新库来学习使用。

一个非常经典的?,绘制条形图

代码语言:javascript
复制
from pyecharts.charts import Bar

bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.render()

导入包的方式也发生了变化,各种图表类型集成在 charts 中。同时 V1 也支持链式调用如下,

代码语言:javascript
复制
from pyecharts.charts import Bar
from pyecharts import options as opts
bar = (
     Bar()
     .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
     .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
     .set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)
bar.render()

通过使用options配置项,可以修改各种配置项参数,还可以使用渲染成图片文件。

代码语言:javascript
复制
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
make_snapshot(snapshot, bar.render(), "bar.png")

另外,需要特别强调的一点是「数据格式」的问题。pyecharts 本质上在做的事情就是将 Echarts 的配置项由 Python dict 序列化为 JSON 格式,所以 pyecharts 支持什么格式的数据类型取决于 JSON 支持什么数据类型。

简单来说,我们需要自己将绘制成图像的数据的格式转换成Python原生的数据格式。我们可以利用Series.tolist()来转换,或者利用列表生成式来转换。

代码语言:javascript
复制
# for int
[int(x) for x in your_numpy_array_or_something_else]
# for str
[str(x) for x in your_numpy_array_or_something_else]

经典图表示例

折线图Demo

利用了 Faker 生成假的数据

代码语言:javascript
复制
import pyecharts.options as opts
from pyecharts.faker import  Faker
from pyecharts.charts import Line

c=(
   Line()
   .add_xaxis(Faker.choose())
   .add_yaxis("商家A", Faker.values())
   .add_yaxis("商家B", Faker.values())
   .set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
   )

c.render()

雷达图Demo

代码语言:javascript
复制
from pyecharts import options as opts
from pyecharts.charts import Page, Radar

v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]

def radar_base() -> Radar:
    c = (
        Radar()
        .add_schema(
            schema=[
                opts.RadarIndicatorItem(name="销售", max_=6500),
                opts.RadarIndicatorItem(name="管理", max_=16000),
                opts.RadarIndicatorItem(name="信息技术", max_=30000),
                opts.RadarIndicatorItem(name="客服", max_=38000),
                opts.RadarIndicatorItem(name="研发", max_=52000),
                opts.RadarIndicatorItem(name="市场", max_=25000),
            ]
        )
        .add("预算分配", v1)
        .add("实际开销", v2)
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title="Radar-基本示例"))
    )
    return c
    
c=radar_base()
c.render()

词云Demo

代码语言:javascript
复制
from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType

words = [
    ("Sam S Club", 10000),
    ("Macys", 6181),
    ("Amy Schumer", 4386),
    ("Jurassic World", 4055),
    ("Charter Communications", 2467),
    ("Chick Fil A", 2244),
    ("Planet Fitness", 1868),
    ("Pitch Perfect", 1484),
    ("Express", 1112),
    ("Home", 865),
    ("Johnny Depp", 847),
    ("Lena Dunham", 582),
]

def wordcloud_base() -> WordCloud:
    c = (
        WordCloud()
        .add("", words, word_size_range=[20, 100])
        .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-基本示例"))
    )
    return c

c=wordcloud_base()
c.render()

酷炫图表示例

百度地图Demo

结合百度地图,绘制杭州热门步行路线

桑基图Demo

桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小。

地理坐标线Demo

可以绘制出路线图,并动态展示

文章素材来自于pyecharts官方文档,更多精彩内容可以点击 「阅读原文

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与数据之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档