python爬虫数据可视化_[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网...

pyecharts是一个用于生成Echarts图表的类库,Echarts是百度开源的一个数据可视化JS库。主要用于数据可视化。pyecharts可以结合Pandas&Numpy使用,同时他可以与Flask和Django结合应用在Web中。

一、pyecharts安装

pyecharts兼容Python2和Python3,当前最新版本为v0.4.0。推荐使用pyecharts的最新版本!!

pip install pyecharts

二、第一个示例

首先开始来绘制你的第一个图表

from pyecharts import Bar

bar = Bar("我的第一个图表", "这里是副标题")

bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])

bar.print_echarts_options()

bar.render()

add():主要方法,用于添加图表的数据和设置各种配置项

show_config():打印输出图表的所有配置项

render():默认将会在根目录下生成一个render.html的文件,支持path参数,设置文件保存位置,如render(r"e:\my_first_chart.html"),文件用浏览器打开。

35103909-3ee41ba2-fca2-11e7-87be-1a3585b9e0fa.png

注意:

可以按右边的下载按钮将图片下载到本地,如果想要提供更多实用工具按钮,请在add()中设置is_more_utils为True

from pyecharts import Bar

bar = Bar("我的第一个图表", "这里是副标题")

bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90],

is_more_utils=True)

bar.render()

35104150-f31e1b7c-fca2-11e7-81cf-a12bf1629e02.png

三、图形绘制过程

基本上所有的图表类型都是这样绘制的:

chart_name = Type()初始化具体类型图表。

add()添加数据及配置项。

render()生成.html文件。

add()数据一般为两个列表(长度一致)。

如果你的数据是字典或者是带元组的字典。可利用cast()方法转换。

四、多次显示图表

在pyecharts可以连续使用chart.render在同一个脚本中显示多个图表。

from pyecharts import Bar, Line

bar = Bar("我的第一个图表", "这里是副标题")

bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])

bar.render(path='bar.html')

line = Line("我的第一个图表", "这里是副标题")

line.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])

line.render(path='line.html')

从v0.4.0开始,pyecharts重构了渲染的内部逻辑,改善效率。推荐使用以下方式显示多个图表。

from pyecharts import Bar, Line

from pyecharts.engine import create_default_environment

bar = Bar("我的第一个图表", "这里是副标题")

bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])

line = Line("我的第一个图表", "这里是副标题")

line.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90])

env = create_default_environment()

env.render_chart_to_file(bar, path='bar.html')

env.render_chart_to_file(line, path='line.html')

相比第一个例子,该代码只是使用同一个引擎对象,减少了部分重复操作,速度有所提高。

五、图表类型

pyecharts文档比较长,内容比较丰富;我们只给出代码示例和效果图,详细内容大家可以参考文档:

1、Bar(柱状图/条形图)

柱状/条形图,通过柱形的高度/条形的宽度来表现数据的大小。Note:全局配置项要在最后一个add()上设置,否侧设置会被冲刷掉。文档地址参考Bar(柱状图/条形图)

from pyecharts import Bar

attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]

v1 = [5, 20, 36, 10, 75, 90]

v2 = [10, 25, 8, 60, 20, 80]

bar = Bar("柱状图数据堆叠示例")

bar.add("商家A", attr, v1, is_stack=True)

bar.add("商家B", attr, v2, is_stack=True)

bar.render()

35081597-0c3e7212-fc50-11e7-8f72-af6c552223e8.gif

也可以使用X轴和Y轴交换。

from pyecharts import Bar

bar = Bar("x 轴和 y 轴交换")

bar.add("商家A", attr, v1)

bar.add("商家B", attr, v2, is_convert=True)

bar.render()

35081605-151472ce-fc50-11e7-8627-66929309b08c.png

2、Bar3D(3D 柱状图)

我们可以创建3D图表,Bar3D.add()方法签名,设置is_grid3d_rotate启动自动旋转功能,设置grid3d_rotate_speed调节旋转速度。

from pyecharts import Bar3D

bar3d = Bar3D("3D 柱状图示例", width=1200, height=600)

x_axis = [

"12a", "1a", "2a", "3a", "4a", "5a", "6a", "7a", "8a", "9a", "10a", "11a",

"12p", "1p", "2p", "3p", "4p", "5p", "6p", "7p", "8p", "9p", "10p", "11p"]

y_axis = [

"Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"]

data = [

[0, 0, 5], [0, 1, 1], [0, 2, 0], [0, 3, 0], [0, 4, 0], [0, 5, 0],

[0, 6, 0], [0, 7, 0], [0, 8, 0], [0, 9, 0], [0, 10, 0], [0, 11, 2],

[0, 12, 4], [0, 13, 1], [0, 14, 1], [0, 15, 3], [0, 16, 4], [0, 17, 6],

[0, 18, 4], [0, 19, 4], [0, 20, 3], [0, 21, 3], [0, 22, 2], [0, 23, 5],

[1, 0, 7], [1, 1, 0], [1, 2, 0], [1, 3, 0], [1, 4, 0], [1, 5, 0],

[1, 6, 0], [1, 7, 0], [1, 8, 0], [1, 9, 0], [1, 10, 5], [1, 11, 2],

[1, 12, 2], [1, 13, 6], [1, 14, 9], [1, 15, 11], [1, 16, 6], [1, 17, 7],

[1, 18, 8], [1, 19, 12], [1, 20, 5], [1, 21, 5], [1, 22, 7], [1, 23, 2],

[2, 0, 1], [2, 1, 1], [2, 2, 0], [2, 3, 0], [2, 4, 0], [2, 5, 0],

[2, 6, 0], [2, 7, 0], [2, 8, 0], [2, 9, 0], [2, 10, 3], [2, 11, 2],

[2, 12, 1], [2, 13, 9], [2, 14, 8], [2, 15, 10], [2, 16, 6], [2, 17, 5],

[2, 18, 5], [2, 19, 5], [2, 20, 7], [2, 21, 4], [2, 22, 2], [2, 23, 4],

[3, 0, 7], [3, 1, 3], [3, 2, 0], [3, 3, 0], [3, 4, 0], [3, 5, 0],

[3, 6, 0], [3, 7, 0], [3, 8, 1], [3, 9, 0], [3, 10, 5], [3, 11, 4],

[3, 12, 7], [3, 13, 14], [3, 14, 13], [3, 15, 12], [3, 16, 9], [3, 17, 5],

[3, 18, 5], [3, 19, 10], [3, 20, 6], [3, 21, 4], [3, 22, 4], [3, 23, 1],

[4, 0, 1], [4, 1, 3], [4, 2, 0], [4, 3, 0], [4, 4, 0], [4, 5, 1],

[4, 6, 0], [4, 7, 0], [4, 8, 0], [4, 9, 2], [4, 10, 4], [4, 11, 4],

[4, 12, 2], [4, 13, 4], [4, 14, 4], [4, 15, 14], [4, 16, 12], [4, 17, 1],

[4, 18, 8], [4, 19, 5], [4, 20, 3], [4, 21, 7], [4, 22, 3], [4, 23, 0],

[5, 0, 2], [5, 1, 1], [5, 2, 0], [5, 3, 3], [5, 4, 0], [5, 5, 0],

[5, 6, 0], [5, 7, 0], [5, 8, 2], [5, 9, 0], [5, 10, 4], [5, 11, 1],

[5, 12, 5], [5, 13, 10], [5, 14, 5], [5, 15, 7], [5, 16, 11], [5, 17, 6],

[5, 18, 0], [5, 19, 5], [5, 20, 3], [5, 21, 4], [5, 22, 2], [5, 23, 0],

[6, 0, 1], [6, 1, 0], [6, 2, 0], [6, 3, 0], [6, 4, 0], [6, 5, 0],

[6, 6, 0], [6, 7, 0], [6, 8, 0], [6, 9, 0], [6, 10, 1], [6, 11, 0],

[6, 12, 2], [6, 13, 1], [6, 14, 3], [6, 15, 4], [6, 16, 0], [6, 17, 0],

[6, 18, 0], [6, 19, 0], [6, 20, 1], [6, 21, 2], [6, 22, 2], [6, 23, 6]

]

range_color = ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf',

'#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']

bar3d.add("", x_axis, y_axis, [[d[1], d[0], d[2]] for d in data],

is_visualmap=True, visual_range=[0, 20],

visual_range_color=range_color, grid3d_width=200, grid3d_depth=80)

bar3d.render()

35081629-36a8e046-fc50-11e7-8910-e02bf24008d9.gif

3、Boxplot(箱形图)

箱形图是一种用作显示一组数据分散情况资料的统计图。它能显示出一组数据的最大值、最小值、中位数、下四分位数及上四分位数。

from pyecharts import Boxplot

boxplot = Boxplot("箱形图")

x_axis = ['expr1', 'expr2', 'expr3', 'expr4', 'expr5']

y_axis = [

[850, 740, 900, 1070, 930, 850, 950, 980, 980, 880,

1000, 980, 930, 650, 760, 810, 1000, 1000, 960, 96

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值