推荐一款Python数据可视化神器

发布时间:2021-09-19 07:49:40

1. 前言

在日常工作中,为了更直观的发现数据中隐藏的规律,察觉到变量之间的互动关系,人们常常借助可视化帮助我们更好的给他人解释现象,做到一图胜千文的说明效果。



在Python中,常见的数据可视化库有:


matplotlib 是最常见的2维库,可以算作可视化的必备技能库,由于matplotlib是比较底层的库,api很多,代码学起来不太容易。

seaborn 是建构于matplotlib基础上,能满足绝大多数可视化需求。更特殊的需求还是需要学*matplotlib。


上述两个库都是静态的可视化库,大多数做过前端Web开发的同学都用到过Echarts.js库,它是一款前端可视化的JS库、功能非常之强大。在使用之前,需要导入js库到项目中。对于*时用Python较多的同学而言,如果每次实现可视化功能(特别是一些小需求),都需要引用js库显然不太方便,于是就在想有没有Python与Echarts结合的轮子。?答案是肯定的?,在Github中就有一个国人开发的一个Echarts与Python结合的轮子:Pyecharts,它不仅很好的兼容了web项目,而且可以做到可视化的动态效果。


2. Pyecharts介绍

Pyecharts 是一个用于生成 Echarts 图表的类库。常规的Echarts 是由百度开源的一个数据可视化 JS 库,主要用于数据可视化。简单来说,Pyecharts是一款将python与echarts结合的强大的数据可视化工具。


使用 Pyecharts 可以生成独立的网页,也可以在 flask , Django 中集成使用。


项目介绍:


http://pyecharts.herokuapp.com/

项目源码:


https://github.com/pyecharts/pyecharts

从项目文档介绍可知, pyecharts目前分为两个大的系列版本:0.5.x 和v1.x.x。


V0.5.x

支持 Python2.7,3.4+


0.5.x 版本将不再进行维护,文档位于?05x-docs.pyecharts.org?。


V1

仅支持 Python3.6+


新版本系列将从 v1.0.0 开始,文档位于 pyecharts.org;示例位于?gallery.pyecharts.org


PS: v0.5.x 和 V1 间不兼容,V1 是一个全新的版本。


3. Pyecharts支持30+种可视化图表

得益于Echarts 项目,目前Pyecharts支持 30+ 种常见图表,如下所示:


Bar(柱状图/条形图)Bar3D(3D 柱状图)Boxplot(箱形图)EffectScatter(散点图)Funnel(漏斗图)Gauge(仪表盘)Geo(地理坐标系)Graph(关系图)HeatMap(热力图)Kline(K线图)Line(折线/面积图)Line3D(3D 折线图)Liquid(水球图)Map(地图)Parallel(*行坐标系)Pie(饼图)Polar(极坐标系)Radar(雷达图)Sankey(桑基图)Scatter(散点图)Scatter3D(3D 散点图)ThemeRiver(主题河流图)WordCloud(词云图)?


4. Pyecharts安装

1、pip 安装


# 安装 v1 以*姹
$ pip install pyecharts -U

# 如果需要安装 0.5.11 版本的开发者,可以使用
# pip install pyecharts==0.5.11

2、源码安装


# v1 以*姹
$ git clone https://github.com/pyecharts/pyecharts.git
# 如果需要安装 0.5.11 版本,请使用 git clone https://github.com/pyecharts/pyecharts.git -b v05x
$ cd pyecharts
$ pip install -r requirements.txt
$ python setup.py install

在使用pip安装库时,由于墙的原因,下载时可能会出现断线和速度过慢的问题导致下载失败,所以建议通过豆瓣源或清华镜像来进行下载:


# 豆瓣源下载
pip install -i https://pypi.douban.com/simple pyecharts

# 清华镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

PS: 这里要专门说明一下,自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表(Geo、Map),可自行安装对应的地图文件包。


# 通过pip命令进行安装
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg

5. Pyecharts官方示例实战

现在我们来开始正式使用pycharts,这里我们先直接使用官方的数据,感受一下可视化展示效果。


from pyecharts.charts import Bar
from pyecharts import options as opts

# V1 版本开始支持链式调用
bar = (
Bar()
.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况"))
)
bar.render_notebook()

在这里顺便安利一下jupyter,pyecharts在v0.1.9.2版本开始,在jupyter上可以直接调用实例(例如上方直接调用bar.render_notebook())就可以将图表直接展示出来,非常方便。



如果脚本在非jupyter环境运行,图表渲染方法需改为:


bar.render()

默认情况下,pycharts生成图表为HTML格式,也支持生成png图片格式,如下:


from snapshot_selenium import snapshot as driver

from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot


def bar_chart() -> Bar:
c = (
Bar()
.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])
.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])
.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])
.reversal_axis()
.set_series_opts(label_opts=opts.LabelOpts(position="right"))
.set_global_opts(title_opts=opts.TitleOpts(title="Bar-测试渲染图片"))
)
return c

# 需要安装 snapshot-selenium 或者 snapshot-phantomjs
make_snapshot(driver, bar_chart().render(), "bar.png")


6. Pyecharts几种高频使用的可视化图表

在上面官方示例中的柱状图表我们已经能感受到pycharts可视化功能的强大,最后再介始几种日常工作中常用的可视化图表及对应示例。


6.1 Pie饼状图


from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker

pie = (
Pie()
.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
.set_global_opts(title_opts=opts.TitleOpts(title="Pie-设置颜色"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)

pie.render_notebook()


6.2 仪表盘


from pyecharts import options as opts
from pyecharts.charts import Gauge

g = (
Gauge()
.add("", [("完成率", 66.6)])
.set_global_opts(title_opts=opts.TitleOpts(title="Gauge-基本示例"))

)
g.render_notebook()


6.3 折线图


import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = (
Line()
.add_xaxis(Faker.choose())
.add_yaxis("商家A", Faker.values(), is_smooth=True)
.add_yaxis("商家B", Faker.values(), is_smooth=True)
.set_global_opts(title_opts=opts.TitleOpts(title="Line-smooth"))

)
c.render_notebook()


6.4 K线图


from pyecharts import options as opts
from pyecharts.charts import Kline

data = [
[2320.26, 2320.26, 2287.3, 2362.94],
[2300, 2291.3, 2288.26, 2308.38],
[2295.35, 2346.5, 2295.35, 2345.92],
[2347.22, 2358.98, 2337.35, 2363.8],
[2360.75, 2382.48, 2347.89, 2383.76],
[2383.43, 2385.42, 2371.23, 2391.82],
[2377.41, 2419.02, 2369.57, 2421.15],
[2425.92, 2428.15, 2417.58, 2440.38],
[2411, 2433.13, 2403.3, 2437.42],
[2432.68, 2334.48, 2427.7, 2441.73],
[2430.69, 2418.53, 2394.22, 2433.89],
[2416.62, 2432.4, 2414.4, 2443.03],
[2441.91, 2421.56, 2418.43, 2444.8],
[2420.26, 2382.91, 2373.53, 2427.07],
[2383.49, 2397.18, 2370.61, 2397.94],
[2378.82, 2325.95, 2309.17, 2378.82],
[2322.94, 2314.16, 2308.76, 2330.88],
[2320.62, 2325.82, 2315.01, 2338.78],
[2313.74, 2293.34, 2289.89, 2340.71],
[2297.77, 2313.22, 2292.03, 2324.63],
[2322.32, 2365.59, 2308.92, 2366.16],
[2364.54, 2359.51, 2330.86, 2369.65],
[2332.08, 2273.4, 2259.25, 2333.54],
[2274.81, 2326.31, 2270.1, 2328.14],
[2333.61, 2347.18, 2321.6, 2351.44],
[2340.44, 2324.29, 2304.27, 2352.02],
[2326.42, 2318.61, 2314.59, 2333.67],
[2314.68, 2310.59, 2296.58, 2320.96],
[2309.16, 2286.6, 2264.83, 2333.29],
[2282.17, 2263.97, 2253.25, 2286.33],
[2255.77, 2270.28, 2253.31, 2276.22],
]


k = (
Kline()
.add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
.add_yaxis("k线图", data)
.set_global_opts(
yaxis_opts=opts.AxisOpts(is_scale=True),
xaxis_opts=opts.AxisOpts(is_scale=True),
title_opts=opts.TitleOpts(title="K线图-基本示例"),
)

)
k.render_notebook()


6.5 地图Map


from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker

map = (
Map()
.add("中国地图", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
.set_global_opts(title_opts=opts.TitleOpts(title="Map-基本示例"))
)
map.render_notebook()


6.6 词云图


import pyecharts.options as opts
from pyecharts.charts import WordCloud


data = [
("生活资源", "999"),
("供热管理", "888"),
("供气质量", "777"),
("生活用水管理", "688"),
("一次供水问题", "588"),
("交通运输", "516"),
("城市交通", "515"),
("环境保护", "483"),
("房地产管理", "462"),
("城乡建设", "449"),
("社会保障与福利", "429"),
("社会保障", "407"),
("文体与教育管理", "406"),
("公共安全", "406"),
("公交运输管理", "386"),
("出租车运营管理", "385"),
("供热管理", "375"),
("市容环卫", "355"),
("自然资源管理", "355"),
("粉尘污染", "335"),
("噪声污染", "324"),
("土地资源管理", "304"),
("物业服务与管理", "304"),
("医疗卫生", "284"),
("粉煤灰污染", "284"),
("占道", "284"),
("供热发展", "254"),
("农村土地规划管理", "254"),
("生活噪音", "253"),
("供热单位影响", "253"),
("城市供电", "223"),
("房屋质量与安全", "223"),
("大气污染", "223"),
("房屋安全", "223"),
("文化活动", "223"),
("拆迁管理", "223"),
("公共设施", "223"),
("供气质量", "223"),
("供电管理", "223"),
("燃气管理", "152"),
("教育管理", "152"),
("医疗纠纷", "152"),
("执法监督", "152"),
("设备安全", "152"),
("政务建设", "152"),
("县区、开发区", "152"),
("宏观经济", "152"),
("教育管理", "112"),
("社会保障", "112"),
("生活用水管理", "112"),
("物业服务与管理", "112"),
("分类列表", "112"),
("农业生产", "112"),
("二次供水问题", "112"),
("城市公共设施", "92"),
("拆迁政策咨询", "92"),
("物业服务", "92"),
("物业管理", "92"),
("社会保障保险管理", "92"),
("低保管理", "92"),
("文娱市场管理", "72"),
("城市交通秩序管理", "72"),
("执法争议", "72"),
("商业烟尘污染", "72"),
("占道堆放", "71"),
("地上设施", "71"),
("水质", "71"),
("无水", "71"),
("供热单位影响", "71"),
("人行道管理", "71"),
("主网原因", "71"),
("集中供热", "71"),
("客运管理", "71"),
("国有公交(大巴)管理", "71"),
("工业粉尘污染", "71"),
("治安案件", "71"),
("压力容器安全", "71"),
("身份证管理", "71"),
("群众健身", "41"),
("工业排放污染", "41"),
("破坏森林资源", "41"),
("市场收费", "41"),
("生产资金", "41"),
("生产噪声", "41"),
("农村低保", "41"),
("劳动争议", "41"),
("劳动合同争议", "41"),
("劳动报酬与福利", "41"),
("医疗事故", "21"),
("停供", "21"),
("基础教育", "21"),
("职业教育", "21"),
("物业资质管理", "21"),
("拆迁补偿", "21"),
("设施维护", "21"),
("市场外溢", "11"),
("占道经营", "11"),
("树木管理", "11"),
("农村基础设施", "11"),
("无水", "11"),
("供气质量", "11"),
("停气", "11"),
("燃气管理", "11"),
("市容环卫", "11"),
("新闻传媒", "11"),
("人才招聘", "11"),
("市场环境", "11"),
("行政事业收费", "11"),
("食品安全与卫生", "11"),
("城市交通", "11"),
("房地产开发", "11"),
("房屋配套问题", "11"),
("物业服务", "11"),
("物业管理", "11"),
("占道", "11"),
("园林绿化", "11"),
("户籍管理及身份证", "11"),
("公交运输管理", "11"),
("公路(水路)交通", "11"),
("房屋与图纸不符", "11"),
("有线电视", "11"),
("社会治安", "11"),
("林业资源", "11"),
("其他行政事业收费", "11"),
("经营性收费", "11"),
("食品安全与卫生", "11"),
("体育活动", "11"),
("有线电视安装及调试维护", "11"),
("低保管理", "11"),
("劳动争议", "11"),
("社会福利及事务", "11"),
("一次供水问题", "11"),
]


c=(
WordCloud()
.add(series_name="热点分析", data_pair=data, word_size_range=[6, 66])
.set_global_opts(
title_opts=opts.TitleOpts(
title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
),
tooltip_opts=opts.TooltipOpts(is_show=True),
)

)
c.render_notebook()


上述示例仅供参考,读者们结合日常工作应用,学会举一反三才是关健,更多Pychart示例介绍可见:?代码示例

相关文档

  • 【微信支付】小微商户进件 接口分析与源码实现
  • 赏郁金香花的心情说说赏郁金香花的心情句子
  • java (逻辑与&&、按位与&、逻辑或||、按位或|、异或^、左移和右移)的区别?
  • 亚欧各国城市建设与环保理念
  • 开学第一课主持稿范文2篇
  • 计算机三级考试啊!!!!!!!!!!!!。。。。。。。。。。。。?????????????
  • oppoa59s手机的录屏在哪里
  • slot
  • 悠百佳加盟要多少钱
  • 世界三大红酒酒神都有谁
  • python股票大数据分析_向大家介绍我的新书:《基于股票大数据分析的Python入门实战》...
  • 家长如何与小学生沟通交流
  • Java在windows环境下的安装与配置
  • 黄酒对女性的好处
  • android各种高级素材(整合)
  • 高中历史学习方法浅谈
  • 放假了,锻炼去吧
  • 沈阳方特游乐园里面设施花钱吗
  • 喝安幕希酸奶会上火吗
  • 鬼妓女的恐怖故事
  • 中考优秀作文范文:改变自己
  • 差点往生了
  • Android Natvie Hook讲解、 got表hook、inline hook 原理
  • 微信小程序快捷键设置
  • 教育孩子的励志名言|有害的励志名言,不要教孩子
  • 视频教程-PHP分布式架构RPC入门到实战-PHP
  • 酒楼经营的策划方案
  • 写温暖的700字以上初二随笔
  • 新人进单位自我介绍
  • 小学数学应用题:典型应用题解析
  • 猜你喜欢

  • 万圣节之夜_五年级叙事作文
  • 清晨,那一缕温暖的阳光_关于爷爷的作文600字
  • 2020年2月大学生超市实*报告
  • 第1课生活在人民当家作主的国家(新人教必修2)
  • Web3极客日报 #12
  • 精品学*2017六年级科学上册第四章第3课地球上为什么会有四季教案新人教版
  • 小学数学人教2011课标版一年级找规律练*题
  • 张之洞们的工作餐
  • 写一件事的启示精选作文
  • 研究性学*指导下的农村生物教学初探
  • (精选班会)拒绝零食杜绝垃圾主题班会
  • 初三政治半期复习题及答案
  • [IMX6Q][Android5.1]androidboot.xxx如何转换成ro.boot.xxx
  • 国药控股新疆阿勒泰药业有限公司企业信用报告-天眼查
  • 一杯红糖水的七种妙用
  • 提高初中英语听力教学的策略研究
  • 管路滑脱管理规范
  • 谈建筑施工企业的安全生产管理
  • 天津市金禧热力有限公司(企业信用报告)- 天眼查
  • 胆囊结石的护理常规
  • 混凝土高铁搅拌站项目可行性研究报告模板范文(立项备案项目申请)
  • 201012232010学年度上学期第一次朋考八年级思想品德试题
  • 2015国家公务员考试行测:备考策略及常见误区
  • 升学面试自我介绍范文
  • 高中记叙文写作教案 10300字
  • 武汉贤助企业咨询代理有限公司企业信息报告-天眼查
  • 《财务会计学》复*串讲
  • 油淋笋鸡
  • 华师附中高三化学第一次月考试题
  • 最全最新cpu显卡天梯图_台式机cpu天梯图2019年6月最新版
  • 探讨我国机械自动化技术的发展
  • 百货商场常见促销方式分析和比较
  • 福建省春秋国际旅行社有限公司福州城门营业部企业信用报告-天眼查
  • 山东省2013年普通高等教育专升本招生学校招生专业和计划
  • 2020年小学六年级班主任工作总结4篇
  • 深圳市大族机器人有限公司(企业信用报告)- 天眼查
  • 人教部编版课件《苏联的社会主义建设》精美课件4
  • 七年级语文教学工作反思例文
  • 我喜欢的植物初中作文范文5篇
  • 单反的反光镜是什么
  • 检验批与分项工程的关系(智能)
  • 2015年宁夏回族自治区请问资产评估师报考条件和考试科目考试资料
  • 电脑版