Python数据可视化处理库PyEcharts柱状图,饼图,线性图

1. PyEcharts简介

PyEcharts是Python数据可视化处理库,提供了饼图、柱状图、散点图、漏斗图等多种可视化图表。其底层依赖于百度开源的ECharts,可以在Python中方便地使用和搭建,同时具有高度的定制性。

2. 安装PyEcharts

安装PyEcharts可以通过pip命令进行安装。

pip install pyecharts

3. 柱状图

3.1 基本柱状图

柱状图用于展示不同类别之间的数量或者比率的差异。这里以生育率数据为例,用柱状图来表示各个国家的生育率情况。

from pyecharts import options as opts

from pyecharts.charts import Bar

bar = Bar()

bar.add_xaxis(["中国", "美国", "日本", "韩国", "法国"])

bar.add_yaxis("生育率", [1.62, 1.77, 1.42, 1.17, 1.88])

bar.set_global_opts(title_opts=opts.TitleOpts(title="各国家生育率"))

bar.render()

运行以上代码,可以生成如下柱状图:

从图中可以看出,美国和法国的生育率明显高于其他几个国家。

3.2 多系列柱状图

多系列柱状图可以在同一图中展示多个系列的数据差异。这里以各省份GDP数据为例,用柱状图来展示不同省份的GDP情况。

from pyecharts import options as opts

from pyecharts.charts import Bar

provinces = ["北京", "上海", "广东", "江苏", "浙江"]

year1 = [2.73, 2.83, 7.19, 8.16, 4.86]

year2 = [3.20, 3.53, 10.03, 10.64, 6.11]

bar = Bar()

bar.add_xaxis(provinces)

bar.add_yaxis("2015年", year1)

bar.add_yaxis("2016年", year2)

bar.set_global_opts(

title_opts=opts.TitleOpts(title="各省份GDP"),

legend_opts=opts.LegendOpts(orient="vertical", pos_top="20%", pos_left="80%"))

bar.render()

运行以上代码,可以生成如下柱状图:

从图中可以看出,广东省和江苏省的GDP明显高于其他省份,且各省份的GDP都有持续增长的趋势。

4. 饼图

4.1 基本饼图

饼图用于展示不同类别间的数量或者比率的占比。这里以各个地区的人口数量为例,用饼图来表示各地区的人口构成比例。

from pyecharts import options as opts

from pyecharts.charts import Pie

areas = ["华北", "东北", "华东", "中南", "西北", "西南"]

population = [1000, 700, 1500, 2000, 800, 1000]

pie = Pie()

pie.add("", [list(z) for z in zip(areas, population)])

pie.set_global_opts(title_opts=opts.TitleOpts(title="各地区人口比例"))

pie.render()

运行以上代码,可以生成如下饼图:

从图中可以看出,中南地区的人口数量明显高于其他地区。

4.2 环形饼图

环形饼图是一种基于饼图的图表展示形式,具有可视化效果突出、信息转达明确等特点,适合于展现类别占比。这里以大学专业人数为例,用环形饼图展示不同专业人数的占比情况。

from pyecharts import options as opts

from pyecharts.charts import Pie

majors = ["计算机科学与技术", "电气工程及其自动化", "信息工程", "软件工程", "通信工程"]

counts = [200, 180, 150, 100, 80]

pie = Pie()

pie.add("", [list(z) for z in zip(majors, counts)])

pie.set_global_opts(title_opts=opts.TitleOpts(title="各专业人数比例"),

legend_opts=opts.LegendOpts(orient="vertical", pos_top="20%", pos_left="80%"))

pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c} ({d}%)"),)

pie.set_colors(["#FA8072", "#7FFF00", "#00CED1", "#FFC0CB", "#87CEFA"])

pie.set_colors(opts.color_nostardard)

pie.set_colors(["#835FAE", "#00FF7F", "#FFD700", "#00BFFF", "#8B0000"])

pie.render()

运行以上代码,可以生成如下环形饼图:

从图中可以看出,计算机科学与技术是最受欢迎的专业,人数占比最大,其次是电气工程及其自动化。

5. 线性图

5.1 基本线性图

线性图通常用于展示随时间推移或者某一变量发生改变而发生的数量或者比率的变化情况。这里以股票价格为例,用线性图来表示某股票的价格变化趋势。

import random

from pyecharts import options as opts

from pyecharts.charts import Line

price = [random.randint(200, 300) for x in range(20)]

date = ["2021-06-{}".format(x) for x in range(1, 21)]

line = Line()

line.add_xaxis(date)

line.add_yaxis("股票价格", price, markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最高点")]))

line.set_global_opts(title_opts=opts.TitleOpts(title="股票价格变化趋势"),

datazoom_opts=[opts.DataZoomOpts()],

tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"))

line.render()

运行以上代码,可以生成如下线性图:

从图中可以看出,股票价格波动较大,但总体呈上升趋势,其中6月14日出现了最高点。

5.2 多系列线性图

多系列线性图可以同时展示多个系列的数据变化趋势,更能反映出不同数据之间的联系和变化趋势。这里以A、B、C三个公司在过去一年的业务收入为例,用多系列线性图展示它们之间的收入变化趋势。

from pyecharts import options as opts

from pyecharts.charts import Line

a = [50, 60, 80, 100, 110, 120, 125, 130, 135, 140, 150, 160]

b = [40, 45, 55, 75, 90, 100, 110, 115, 120, 132, 139, 150]

c = [30, 40, 50, 60, 65, 75, 80, 85, 90, 100, 105, 113]

months = ["{}月".format(i+1) for i in range(12)]

line = Line()

line.add_xaxis(months)

line.add_yaxis("A公司", a, is_smooth=True)

line.add_yaxis("B公司", b, is_smooth=True)

line.add_yaxis("C公司", c, is_smooth=True)

line.set_global_opts(title_opts=opts.TitleOpts(title="三家公司业务收入变化趋势"),

xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),

tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"))

line.render()

运行以上代码,可以生成如下多系列线性图:

从图中可以看出,三家公司的业务收入都有不同程度的增长。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签