python数据可视化操作原理(推荐一款python数据可视化神器)
python数据可视化操作原理(推荐一款python数据可视化神器)支持Python2.7 3.4 0.5.x版本将不再进行维护,文档位于05x-docs.pyecharts.org。https://github.com/pyecharts/pyecharts 从项目文档介绍可知, pyecharts目前分为两个大的系列版本:0.5.x 和v1.x.x。Pyecharts 是一个用于生成 Echarts 图表的类库。常规的Echarts 是由百度开源的一个数据可视化 JS 库,主要用于数据可视化。简单来说,Pyecharts是一款将python与echarts结合的强大的数据可视化工具。使用 Pyecharts 可以生成独立的网页,也可以在 flask Django 中集成使用。 项目介绍:http://pyecharts.herokuapp.com/ 项目源码:
好久没有更新关于Python的资料,今天给大家推荐一篇来自狂师 推荐一款Python数据可视化神器。希望对你有帮助,文章最后有学习资料。
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(词云图)
image.png
4. Pyecharts安装
4.1 pip 安装
# 安装 v1 以上版本
$ pip install pyecharts -U
# 如果需要安装 0.5.11 版本的开发者,可以使用
# pip install pyecharts==0.5.11
4.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()
有小伙伴私信我,要Python的学习资料,我连夜整理了一些有深度的Python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Python的同学可以免费下载学习,有兴趣的可以下载来看一下。资料是我辛苦整理的可不能轻易得到哟。点击我的头像,关注后私信回复“资料”即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。“编程是门手艺活”。什么意思?得练啊。