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()

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, 960],

[960, 940, 960, 940, 880, 800, 850, 880, 900, 840,

830, 790, 810, 880, 880, 830, 800, 790, 760, 800],

[880, 880, 880, 860, 720, 720, 620, 860, 970, 950,

880, 910, 850, 870, 840, 840, 850, 840, 840, 840],

[890, 810, 810, 820, 800, 770, 760, 740, 750, 760,

910, 920, 890, 860, 880, 720, 840, 850, 850, 780],

[890, 840, 780, 810, 760, 810, 790, 810, 820, 850,

870, 870, 810, 740, 810, 940, 950, 800, 810, 870]

]

_yaxis = boxplot.prepare_data(y_axis) # 转换数据

boxplot.add("boxplot", x_axis, _yaxis)

boxplot.render()

35082364-4f4e98f8-fc54-11e7-9e53-1d6a66b67e46.png

4、EffectScatter(带有涟漪特效动画的散点图)

利用动画特效可以将某些想要突出的数据进行视觉突出。

from pyecharts import EffectScatter

v1 = [10, 20, 30, 40, 50, 60]

v2 = [25, 20, 15, 10, 60, 33]

es = EffectScatter("动态散点图示例")

es.add("effectScatter", v1, v2)

es.render()

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

5、Funnel(漏斗图)

from pyecharts import Funnel

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

value = [20, 40, 60, 80, 100, 120]

funnel = Funnel("漏斗图示例")

funnel.add("商品", attr, value, is_label_show=True,

label_pos="inside", label_text_color="#fff")

funnel.render()

35090181-d6b0e886-fc73-11e7-8e00-dec8ac38c415.gif

6、Gauge(仪表盘)

from pyecharts import Gauge

gauge = Gauge("仪表盘示例")

gauge.add("业务指标", "完成率", 66.66)

gauge.render()

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

7、Geo(地理坐标系)

地理坐标系组件用于地图的绘制,支持在地理坐标系上绘制散点图,线集。

from pyecharts import Geo

data = [

("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),

("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),

("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25),

("文登", 25),("上海", 25),("攀枝花", 25),("威海", 25),("承德", 25),("厦门", 26),

("汕尾", 26),("潮州", 26),("丹东", 27),("太仓", 27),("曲靖", 27),("烟台", 28),

("福州", 29),("瓦房店", 30),("即墨", 30),("抚顺", 31),("玉溪", 31),("张家口", 31),

("阳泉", 31),("莱州", 32),("湖州", 32),("汕头", 32),("昆山", 33),("宁波", 33),

("湛江", 33),("揭阳", 34),("荣成", 34),("连云港", 35),("葫芦岛", 35),("常熟", 36),

("东莞", 36),("河源", 36),("淮安", 36),("泰州", 36),("南宁", 37),("营口", 37),

("惠州", 37),("江阴", 37),("蓬莱", 37),("韶关", 38),("嘉峪关", 38),("广州", 38),

("延安", 38),("太原", 39),("清远", 39),("中山", 39),("昆明", 39),("寿光", 40),

("盘锦", 40),("长治", 41),("深圳", 41),("珠海", 42),("宿迁", 43),("咸阳", 43),

("铜川", 44),("平度", 44),("佛山", 44),("海口", 44),("江门", 45),("章丘", 45),

("肇庆", 46),("大连", 47),("临汾", 47),("吴江", 47),("石嘴山", 49),("沈阳", 50),

("苏州", 50),("茂名", 50),("嘉兴", 51),("长春", 51),("胶州", 52),("银川", 52),

("张家港", 52),("三门峡", 53),("锦州", 54),("南昌", 54),("柳州", 54),("三亚", 54),

("自贡", 56),("吉林", 56),("阳江", 57),("泸州", 57),("西宁", 57),("宜宾", 58),

("呼和浩特", 58),("成都", 58),("大同", 58),("镇江", 59),("桂林", 59),("张家界", 59),

("宜兴", 59),("北海", 60),("西安", 61),("金坛", 62),("东营", 62),("牡丹江", 63),

("遵义", 63),("绍兴", 63),("扬州", 64),("常州", 64),("潍坊", 65),("重庆", 66),

("台州", 67),("南京", 67),("滨州", 70),("贵阳", 71),("无锡", 71),("本溪", 71),

("克拉玛依", 72),("渭南", 72),("马鞍山", 72),("宝鸡", 72),("焦作", 75),("句容", 75),

("北京", 79),("徐州", 79),("衡水", 80),("包头", 80),("绵阳", 80),("乌鲁木齐", 84),

("枣庄", 84),("杭州", 84),("淄博", 85),("鞍山", 86),("溧阳", 86),("库尔勒", 86),

("安阳", 90),("开封", 90),("济南", 92),("德阳", 93),("温州", 95),("九江", 96),

("邯郸", 98),("临安", 99),("兰州", 99),("沧州", 100),("临沂", 103),("南充", 104),

("天津", 105),("富阳", 106),("泰安", 112),("诸暨", 112),("郑州", 113),("哈尔滨", 114),

("聊城", 116),("芜湖", 117),("唐山", 119),("平顶山", 119),("邢台", 119),("德州", 120),

("济宁", 120),("荆州", 127),("宜昌", 130),("义乌", 132),("丽水", 133),("洛阳", 134),

("秦皇岛", 136),("株洲", 143),("石家庄", 147),("莱芜", 148),("常德", 152),("保定", 153),

("湘潭", 154),("金华", 157),("岳阳", 169),("长沙", 175),("衢州", 177),("廊坊", 193),

("菏泽", 194),("合肥", 229),("武汉", 273),("大庆", 279)]

geo = Geo("全国主要城市空气质量", "data from pm2.5", title_color="#fff",

title_pos="center", width=1200,

height=600, background_color='#404a59')

attr, value = geo.cast(data)

geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff",

symbol_size=15, is_visualmap=True)

geo.render()

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

8、GeoLines(地理坐标系线图)

用于带有起点和终点信息的线数据的绘制,主要用于地图上的航线,路线的可视化。

from pyecharts import GeoLines, Style

style_geo = style.add(

is_label_show=True,

line_curve=0.2,

line_opacity=0.6,

legend_text_color="#eee",

legend_pos="right",

geo_effect_symbol="plane",

geo_effect_symbolsize=15,

label_color=['#a6c84c', '#ffa022', '#46bee9'],

label_pos="right",

label_formatter="{b}",

label_text_color="#eee",

)

geolines = GeoLines("GeoLines 示例", **style.init_style)

geolines.add("从广州出发", data_guangzhou, **style_geo)

geolines.render()

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

9、Graph(关系图)

用于展现节点以及节点之间的关系数据。

from pyecharts import Graph

nodes = [{"name": "结点1", "symbolSize": 10},

{"name": "结点2", "symbolSize": 20},

{"name": "结点3", "symbolSize": 30},

{"name": "结点4", "symbolSize": 40},

{"name": "结点5", "symbolSize": 50},

{"name": "结点6", "symbolSize": 40},

{"name": "结点7", "symbolSize": 30},

{"name": "结点8", "symbolSize": 20}]

links = []

for i in nodes:

for j in nodes:

links.append({"source": i.get('name'), "target": j.get('name')})

graph = Graph("关系图-力引导布局示例")

graph.add("", nodes, links, repulsion=8000)

graph.render()

35082109-05240854-fc53-11e7-9e92-dd9437c55383.png

10、HeatMap(热力图)

热力图主要通过颜色去表现数值的大小,必须要配合visualMap组件使用。直角坐标系上必须要使用两个类目轴。

import random

from pyecharts import HeatMap

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 = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]

heatmap = HeatMap()

heatmap.add("热力图直角坐标系", x_axis, y_axis, data, is_visualmap=True,

visual_text_color="#000", visual_orient='horizontal')

heatmap.render()

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

11、Kline/Candlestick(K线图)

红涨蓝跌

from pyecharts import Kline

v1 = [[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]]

kline = Kline("K 线图示例")

kline.add("日K", ["2017/7/{}".format(i + 1) for i in range(31)], v1)

kline.render()

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

12、Line(折线/面积图)

折线图是用折线将各个数据点标志连接起来的图表,用于展现数据的变化趋势。

from pyecharts import Line

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

v1 = [5, 20, 36, 10, 10, 100]

v2 = [55, 60, 16, 20, 15, 80]

line = Line("折线图示例")

line.add("商家A", attr, v1, mark_point=["average"])

line.add("商家B", attr, v2, is_smooth=True, mark_line=["max", "average"])

line.render()

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

13、Line3D(3D 折线图)

from pyecharts import Line3D

import math

_data = []

for t in range(0, 25000):

_t = t / 1000

x = (1 + 0.25 * math.cos(75 * _t)) * math.cos(_t)

y = (1 + 0.25 * math.cos(75 * _t)) * math.sin(_t)

z = _t + 2.0 * math.sin(75 * _t)

_data.append([x, y, z])

range_color = [

'#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf',

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

line3d = Line3D("3D 折线图示例", width=1200, height=600)

line3d.add("", _data, is_visualmap=True, visual_range_color=range_color,

visual_range=[0, 30], grid3d_rotate_sensitivity=5)

line3d.render()

14、Liquid(水球图)

主要用来突出数据的百分比。

from pyecharts import Liquid

liquid = Liquid("水球图示例")

liquid.add("Liquid", [0.6])

liquid.render()

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

15、Map(地图)

地图主要用于地理区域数据的可视化。

from pyecharts import Map

value = [155, 10, 66, 78]

attr = ["福建", "山东", "北京", "上海"]

map = Map("全国地图示例", width=1200, height=600)

map.add("", attr, value, maptype='china')

map.render()

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

16、Parallel(平行坐标系)

平行坐标系是一种常用的可视化高维数据的图表。

from pyecharts import Parallel

schema = ["data", "AQI", "PM2.5", "PM10", "CO", "NO2"]

data = [

[1, 91, 45, 125, 0.82, 34],

[2, 65, 27, 78, 0.86, 45,],

[3, 83, 60, 84, 1.09, 73],

[4, 109, 81, 121, 1.28, 68],

[5, 106, 77, 114, 1.07, 55],

[6, 109, 81, 121, 1.28, 68],

[7, 106, 77, 114, 1.07, 55],

[8, 89, 65, 78, 0.86, 51, 26],

[9, 53, 33, 47, 0.64, 50, 17],

[10, 80, 55, 80, 1.01, 75, 24],

[11, 117, 81, 124, 1.03, 45]

]

parallel = Parallel("平行坐标系-默认指示器")

parallel.config(schema)

parallel.add("parallel", data, is_random=True)

parallel.render()

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

17、Pie(饼图)

饼图主要用于表现不同类目的数据在总和中的占比。每个的弧度表示数据数量的比例。

from pyecharts import Pie

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

v1 = [11, 12, 13, 10, 10, 10]

pie = Pie("饼图示例")

pie.add("", attr, v1, is_label_show=True)

pie.render()

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

18、Polar(极坐标系)

可以用于散点图和折线图。

from pyecharts import Polar

import random

data = [(i, random.randint(1, 100)) for i in range(101)]

polar = Polar("极坐标系-散点图示例")

polar.add("", data, boundary_gap=False, type='scatter',

is_splitline_show=False,

area_color=None, is_axisline_show=True)

polar.render()

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

19、Radar(雷达图)

雷达图主要用于表现多变量的数据。

from pyecharts import Radar

schema = [

("销售", 6500), ("管理", 16000), ("信息技术", 30000),

("客服", 38000), ("研发", 52000), ("市场", 25000)

]

v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]

v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]

radar = Radar()

radar.config(schema)

radar.add("预算分配", v1, is_splitline=True, is_axisline_show=True)

radar.add("实际开销", v2, label_color=["#4e79a7"], is_area_show=False,

legend_selectedmode='single')

radar.render()

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

20、Sankey(桑基图)

桑基图是一种特殊的流图, 它主要用来表示原材料、能量等如何从初始形式经过中间过程的加工、转化到达最终形式。

from pyecharts import Sankey

nodes = [

{'name': 'category1'}, {'name': 'category2'}, {'name': 'category3'},

{'name': 'category4'}, {'name': 'category5'}, {'name': 'category6'},

]

links = [

{'source': 'category1', 'target': 'category2', 'value': 10},

{'source': 'category2', 'target': 'category3', 'value': 15},

{'source': 'category3', 'target': 'category4', 'value': 20},

{'source': 'category5', 'target': 'category6', 'value': 25}

]

sankey = Sankey("桑基图示例", width=1200, height=600)

sankey.add("sankey", nodes, links, line_opacity=0.2,

line_curve=0.5, line_color='source',

is_label_show=True, label_pos='right')

sankey.render()

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

21、Scatter(散点图)

直角坐标系上的散点图可以用来展现数据的 x,y 之间的关系,如果数据项有多个维度,可以用颜色来表现,利用 geo 组件。

from pyecharts import Scatter

v1 = [10, 20, 30, 40, 50, 60]

v2 = [10, 20, 30, 40, 50, 60]

scatter = Scatter("散点图示例")

scatter.add("A", v1, v2)

scatter.add("B", v1[::-1], v2)

scatter.render()

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

22、Scatter3D(3D 散点图)

from pyecharts import Scatter3D

import random

data = [

[random.randint(0, 100),

random.randint(0, 100),

random.randint(0, 100)] for _ in range(80)

]

range_color = [

'#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf',

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

scatter3D = Scatter3D("3D 散点图示例", width=1200, height=600)

scatter3D.add("", data, is_visualmap=True, visual_range_color=range_color)

scatter3D.render()

23、ThemeRiver(主题河流图)

主题河流图是一种特殊的流图, 它主要用来表示事件或主题等在一段时间内的变化。

from pyecharts import ThemeRiver

data = [

['2015/11/08', 10, 'DQ'], ['2015/11/09', 15, 'DQ'], ['2015/11/10', 35, 'DQ'],

['2015/11/14', 7, 'DQ'], ['2015/11/15', 2, 'DQ'], ['2015/11/16', 17, 'DQ'],

['2015/11/17', 33, 'DQ'], ['2015/11/18', 40, 'DQ'], ['2015/11/19', 32, 'DQ'],

['2015/11/20', 26, 'DQ'], ['2015/11/21', 35, 'DQ'], ['2015/11/22', 40, 'DQ'],

['2015/11/23', 32, 'DQ'], ['2015/11/24', 26, 'DQ'], ['2015/11/25', 22, 'DQ'],

['2015/11/08', 35, 'TY'], ['2015/11/09', 36, 'TY'], ['2015/11/10', 37, 'TY'],

['2015/11/11', 22, 'TY'], ['2015/11/12', 24, 'TY'], ['2015/11/13', 26, 'TY'],

['2015/11/14', 34, 'TY'], ['2015/11/15', 21, 'TY'], ['2015/11/16', 18, 'TY'],

['2015/11/17', 45, 'TY'], ['2015/11/18', 32, 'TY'], ['2015/11/19', 35, 'TY'],

['2015/11/20', 30, 'TY'], ['2015/11/21', 28, 'TY'], ['2015/11/22', 27, 'TY'],

['2015/11/23', 26, 'TY'], ['2015/11/24', 15, 'TY'], ['2015/11/25', 30, 'TY'],

['2015/11/26', 35, 'TY'], ['2015/11/27', 42, 'TY'], ['2015/11/28', 42, 'TY'],

['2015/11/08', 21, 'SS'], ['2015/11/09', 25, 'SS'], ['2015/11/10', 27, 'SS'],

['2015/11/11', 23, 'SS'], ['2015/11/12', 24, 'SS'], ['2015/11/13', 21, 'SS'],

['2015/11/14', 35, 'SS'], ['2015/11/15', 39, 'SS'], ['2015/11/16', 40, 'SS'],

['2015/11/17', 36, 'SS'], ['2015/11/18', 33, 'SS'], ['2015/11/19', 43, 'SS'],

['2015/11/20', 40, 'SS'], ['2015/11/21', 34, 'SS'], ['2015/11/22', 28, 'SS'],

['2015/11/14', 7, 'QG'], ['2015/11/15', 2, 'QG'], ['2015/11/16', 17, 'QG'],

['2015/11/17', 33, 'QG'], ['2015/11/18', 40, 'QG'], ['2015/11/19', 32, 'QG'],

['2015/11/20', 26, 'QG'], ['2015/11/21', 35, 'QG'], ['2015/11/22', 40, 'QG'],

['2015/11/23', 32, 'QG'], ['2015/11/24', 26, 'QG'], ['2015/11/25', 22, 'QG'],

['2015/11/26', 16, 'QG'], ['2015/11/27', 22, 'QG'], ['2015/11/28', 10, 'QG'],

['2015/11/08', 10, 'SY'], ['2015/11/09', 15, 'SY'], ['2015/11/10', 35, 'SY'],

['2015/11/11', 38, 'SY'], ['2015/11/12', 22, 'SY'], ['2015/11/13', 16, 'SY'],

['2015/11/14', 7, 'SY'], ['2015/11/15', 2, 'SY'], ['2015/11/16', 17, 'SY'],

['2015/11/17', 33, 'SY'], ['2015/11/18', 40, 'SY'], ['2015/11/19', 32, 'SY'],

['2015/11/20', 26, 'SY'], ['2015/11/21', 35, 'SY'], ['2015/11/22', 4, 'SY'],

['2015/11/23', 32, 'SY'], ['2015/11/24', 26, 'SY'], ['2015/11/25', 22, 'SY'],

['2015/11/26', 16, 'SY'], ['2015/11/27', 22, 'SY'], ['2015/11/28', 10, 'SY'],

['2015/11/08', 10, 'DD'], ['2015/11/09', 15, 'DD'], ['2015/11/10', 35, 'DD'],

['2015/11/11', 38, 'DD'], ['2015/11/12', 22, 'DD'], ['2015/11/13', 16, 'DD'],

['2015/11/14', 7, 'DD'], ['2015/11/15', 2, 'DD'], ['2015/11/16', 17, 'DD'],

['2015/11/17', 33, 'DD'], ['2015/11/18', 4, 'DD'], ['2015/11/19', 32, 'DD'],

['2015/11/20', 26, 'DD'], ['2015/11/21', 35, 'DD'], ['2015/11/22', 40, 'DD'],

['2015/11/23', 32, 'DD'], ['2015/11/24', 26, 'DD'], ['2015/11/25', 22, 'DD']

]

tr = ThemeRiver("主题河流图示例图")

tr.add(['DQ', 'TY', 'SS', 'QG', 'SY', 'DD'], data, is_label_show=True)

tr.render()

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

24、TreeMap(树图)

树图是一种常见的表达『层级数据』『树状数据』的可视化形式。它主要用面积的方式,便于突出展现出『树』的各层级中重要的节点。

from pyecharts import TreeMap

data = [

{

"value": 40,

"name": "我是A",

},

{

"value": 180,

"name": "我是B",

"children": [

{

"value": 76,

"name": "我是B.children",

"children": [

{

"value": 12,

"name": "我是B.children.a",

},

{

"value": 28,

"name": "我是B.children.b",

},

{

"value": 20,

"name": "我是B.children.c",

},

{

"value": 16,

"name": "我是B.children.d",

}]

}]}

]

treemap = TreeMap("树图-默认示例", width=1200, height=600)

treemap.add("演示数据", data, is_label_show=True, label_pos='inside')

treemap.render()

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

25、WordCloud(词云图)

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.render()

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

六、Web 整合

pyecharts现在和web框架的整合工作变得十分容易,无论你是刚开始开发web项目还是整合已有的项目。这主要得益于python语言的灵活性和面向对象特点,使得整合工作不会破坏原有的功能和代码层次结构。

由于我们主要讲解爬虫,所以如果大家需要可以自行去查询。

七、艺术展

用极坐标系画出一个爱心

import math

from pyecharts import Polar

data = []

for i in range(101):

theta = i / 100 * 360

r = 5 * (1 + math.sin(theta / 180 * math.pi))

data.append([r, theta])

hour = [i for i in range(1, 25)]

polar = Polar("极坐标系示例", width=1200, height=600)

polar.add("Love", data, angle_data=hour, boundary_gap=False,start_angle=0)

polar.render()

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

用极坐标系画出一朵小花

import math

from pyecharts import Polar

data = []

for i in range(361):

t = i / 180 * math.pi

r = math.sin(2 * t) * math.cos(2 * t)

data.append([r, i])

polar = Polar("极坐标系示例", width=1200, height=600)

polar.add("Flower", data, start_angle=0, symbol=None, axis_range=[0, None])

polar.render()

example-1

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

还可以给小花涂上颜色

import math

from pyecharts import Polar

data = []

for i in range(361):

t = i / 180 * math.pi

r = math.sin(2 * t) * math.cos(2 * t)

data.append([r, i])

polar = Polar("极坐标系示例", width=1200, height=600)

polar.add("Color-Flower", data, start_angle=0, symbol=None,

axis_range=[0, None], area_color="#f71f24", area_opacity=0.6)

polar.render()

example-2

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

用散点图画出一个爱心

from pyecharts import Scatter

scatter = Scatter("散点图示例", width=800, height=480)

v1 ,v2 = scatter.draw("../images/love.png")

scatter.add("Love", v1, v2)

scatter.render()

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

用散点图画出一个火辣的 Bra

from pyecharts import Scatter

scatter = Scatter("散点图示例", width=1000, height=480)

v1 ,v2 = scatter.draw("../images/cup.png")

scatter.add("Cup", v1, v2)

scatter.render()

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

用散点图画出一个性感的 Bra

from pyecharts import Scatter

scatter = Scatter("散点图示例", width=1000, height=480)

v1 ,v2 = scatter.draw("../images/cup.png")

scatter.add("Cup", v1, v2, label_color=["#000"])

scatter.render()

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

用极坐标系画出一个蜗牛壳

import math

from pyecharts import Polar

data = []

for i in range(5):

for j in range(101):

theta = j / 100 * 360

alpha = i * 360 + theta

r = math.pow(math.e, 0.003 * alpha)

data.append([r, theta])

polar = Polar("极坐标系示例")

polar.add("", data, symbol_size=0, symbol='circle', start_angle=-25,

is_radiusaxis_show=False, area_color="#f3c5b3",

area_opacity=0.5, is_angleaxis_show=False)

polar.render()

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

八、高级用法

pyecharts库的高级进阶用法可以参考高级用法

九、地图自定义

考虑到项目更好的通用性,以及更好可扩展性,所以决定对地图部分提供自定义模式参考高级用法

十、API

API档描述了pyecharts库一些公开的API,以供开发者之使用。API文档地址

十一、图表配置

图表配置主要体现在图标的类型,图表的宽度,颜色以及自定义设置,可以参考图表配置

图表类初始化所接受的参数(所有类型的图表都一样)。

title - > str

主标题文本,支持\ n换行,默认为“”

subtitle - > str

副标题文本,支持\ n换行,默认为“”

width - > int

画布宽度,默认为800(px)

height - > int

画布高度,默认为400(px)

title_pos - > str / int

标题距离左侧距离,默认为'left',有'auto','left','right','center'可选,也可为百分比或整数

title_top - > str / int

标题距离顶部距离,默认为'top',有'top','middle','bottom'可选,也可为百分比或整数

title_color - > str

主标题文本颜色,默认为'#000'

subtitle_color - > str

副标题文本颜色,默认为'#aaa'

title_text_size - > int

主标题文字字体大小,默认为18

subtitle_text_size - > int

副标题文字字体大小,默认为12

background_color - > str

画布背景颜色,默认为'#fff'

page_title - > str

指定生成的html文件中标签的值。默认为'Echarts'

渲染器 - > str指定使用渲染方式,有'svg'和'canvas'可选,默认为'canvas'.3D图仅能使用'canvas'。

你可能感兴趣的:(python爬虫数据可视化)