[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (2024)

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

一、pyecharts安装

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

pip install pyecharts

二、第一个示例

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

from pyecharts import Barbar = 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"),文件用浏览器打开。

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (1)

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

from pyecharts import Barbar = Bar("我的第一个图表", "这里是副标题")bar.add("服装", ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"], [5, 20, 36, 10, 75, 90], is_more_utils=True)bar.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (2)

三、图形绘制过程

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

  • chart_name = Type()初始化具体类型图表。
  • add()添加数据及配置项。
  • render()生成.html文件。add()数据一般为两个列表(长度一致)。如果你的数据是字典或者是带元组的字典。可利用cast()方法转换。

四、多次显示图表

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

from pyecharts import Bar, Linebar = 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, Linefrom pyecharts.engine import create_default_environmentbar = 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 Barattr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]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()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (3)也可以使用X轴和Y轴交换。

from pyecharts import Barbar = Bar("x 轴和 y 轴交换")bar.add("商家A", attr, v1)bar.add("商家B", attr, v2, is_convert=True)bar.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (4)

2、Bar3D(3D 柱状图)

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

from pyecharts import Bar3Dbar3d = 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()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (5)

3、Boxplot(箱形图)

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

from pyecharts import Boxplotboxplot = 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()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (6)

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

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

from pyecharts import EffectScatterv1 = [10, 20, 30, 40, 50, 60]v2 = [25, 20, 15, 10, 60, 33]es = EffectScatter("动态散点图示例")es.add("effectScatter", v1, v2)es.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (7)

5、Funnel(漏斗图)

from pyecharts import Funnelattr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]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()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (8)

6、Gauge(仪表盘)

from pyecharts import Gaugegauge = Gauge("仪表盘示例")gauge.add("业务指标", "完成率", 66.66)gauge.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (9)

7、Geo(地理坐标系)

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

from pyecharts import Geodata = [ ("海门", 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使用pyecharts进行数据可视化 - pytorch中文网 (10)

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

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

from pyecharts import GeoLines, Stylestyle_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使用pyecharts进行数据可视化 - pytorch中文网 (11)

9、Graph(关系图)

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

from pyecharts import Graphnodes = [{"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()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (12)

10、HeatMap(热力图)

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

import randomfrom pyecharts import HeatMapx_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使用pyecharts进行数据可视化 - pytorch中文网 (13)

11、Kline/Candlestick(K线图)

红涨蓝跌

from pyecharts import Klinev1 = [[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使用pyecharts进行数据可视化 - pytorch中文网 (14)

12、Line(折线/面积图)

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

from pyecharts import Lineattr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]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使用pyecharts进行数据可视化 - pytorch中文网 (15)

13、Line3D(3D 折线图)

from pyecharts import Line3Dimport 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()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (16)

14、Liquid(水球图)

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

from pyecharts import Liquidliquid = Liquid("水球图示例")liquid.add("Liquid", [0.6])liquid.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (17)

15、Map(地图)

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

from pyecharts import Mapvalue = [155, 10, 66, 78]attr = ["福建", "山东", "北京", "上海"]map = Map("全国地图示例", width=1200, height=600)map.add("", attr, value, maptype='china')map.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (18)

16、Parallel(平行坐标系)

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

from pyecharts import Parallelschema = ["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使用pyecharts进行数据可视化 - pytorch中文网 (19)

17、Pie(饼图)

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

from pyecharts import Pieattr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]v1 = [11, 12, 13, 10, 10, 10]pie = Pie("饼图示例")pie.add("", attr, v1, is_label_show=True)pie.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (20)

18、Polar(极坐标系)

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

from pyecharts import Polarimport randomdata = [(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使用pyecharts进行数据可视化 - pytorch中文网 (21)

19、Radar(雷达图)

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

from pyecharts import Radarschema = [ ("销售", 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使用pyecharts进行数据可视化 - pytorch中文网 (22)

20、Sankey(桑基图)

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

from pyecharts import Sankeynodes = [ {'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使用pyecharts进行数据可视化 - pytorch中文网 (23)

21、Scatter(散点图)

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

from pyecharts import Scatterv1 = [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使用pyecharts进行数据可视化 - pytorch中文网 (24)

22、Scatter3D(3D 散点图)

from pyecharts import Scatter3Dimport randomdata = [ [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()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (25)

23、ThemeRiver(主题河流图)

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

from pyecharts import ThemeRiverdata = [ ['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使用pyecharts进行数据可视化 - pytorch中文网 (26)

24、TreeMap(树图)

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

from pyecharts import TreeMapdata = [ { "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使用pyecharts进行数据可视化 - pytorch中文网 (27)

25、WordCloud(词云图)

from pyecharts import WordCloudname = [ '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使用pyecharts进行数据可视化 - pytorch中文网 (28)

六、Web 整合

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

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

七、艺术展

用极坐标系画出一个爱心

import mathfrom pyecharts import Polardata = []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使用pyecharts进行数据可视化 - pytorch中文网 (29)

用极坐标系画出一朵小花

import mathfrom pyecharts import Polardata = []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使用pyecharts进行数据可视化 - pytorch中文网 (30)还可以给小花涂上颜色

import mathfrom pyecharts import Polardata = []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使用pyecharts进行数据可视化 - pytorch中文网 (31)用散点图画出一个爱心

from pyecharts import Scatterscatter = Scatter("散点图示例", width=800, height=480)v1 ,v2 = scatter.draw("../images/love.png")scatter.add("Love", v1, v2)scatter.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (32)用散点图画出一个火辣的 Bra

from pyecharts import Scatterscatter = Scatter("散点图示例", width=1000, height=480)v1 ,v2 = scatter.draw("../images/cup.png")scatter.add("Cup", v1, v2)scatter.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (33)用散点图画出一个性感的 Bra

from pyecharts import Scatterscatter = Scatter("散点图示例", width=1000, height=480)v1 ,v2 = scatter.draw("../images/cup.png")scatter.add("Cup", v1, v2, label_color=["#000"])scatter.render()

[ Python爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (34)

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

import mathfrom pyecharts import Polardata = []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使用pyecharts进行数据可视化 - pytorch中文网 (35)

八、高级用法

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爬虫实战 ] Python使用pyecharts进行数据可视化 - pytorch中文网 (2024)

References

Top Articles
Latest Posts
Article information

Author: Terence Hammes MD

Last Updated:

Views: 6614

Rating: 4.9 / 5 (69 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Terence Hammes MD

Birthday: 1992-04-11

Address: Suite 408 9446 Mercy Mews, West Roxie, CT 04904

Phone: +50312511349175

Job: Product Consulting Liaison

Hobby: Jogging, Motor sports, Nordic skating, Jigsaw puzzles, Bird watching, Nordic skating, Sculpting

Introduction: My name is Terence Hammes MD, I am a inexpensive, energetic, jolly, faithful, cheerful, proud, rich person who loves writing and wants to share my knowledge and understanding with you.