【数据可视化】第五章—— 基于PyEcharts的数据可视化

文章目录

  • 1. pyecharts数据可视化介绍
  • 2.pyecharts安装与使用
  • 3.全局配置项和系列配置项
    • 3.1 全局配置项
      • 3.1.1 基本元素配置项
      • 3.1.2 坐标轴配置项
      • 3.1.3 原生图形配置项
    • 3.2 系列配置项
      • 3.2.1 样式类配置项
      • 3.2.2 标记类型配置项
      • 3.2.3 其它类配置项
  • 4.运行环境
    • 4.1 生成HTML
    • 4.2 Jupyter Notebook
    • 4.3 Jupyter Lab
  • 5.Pyecharts可视化绘图
    • 5.1 柱状图
    • 5.2 折线图
    • 5.3 饼图
    • 5.4 箱型图
    • 5.5 涟漪散点图
    • 5.6 K线图
    • 5.7 雷达图
  • 6. Bar的基本使用
  • 7. Line的基本使用
  • 8. 饼图的基本使用
  • 9. 本章小结


1. pyecharts数据可视化介绍

pyecharts是一个用于生成 Echarts 图表的类库,是一款将Python与Echarts相结合的强大的数据可视化工具,使用pyecharts可以让开发者轻松的实现大数据的可视化。

官网 https://pyecharts.org/#/zh-cn/intro

Pyecharts是一个用于生成Echarts图表的库。代码相对简洁,可以生成Echarts风格的图表。

丰富的可视化类型: 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
多种数据格式无需转换直接使用: 内置的 dataset 属性(4.0+)支持直接传入包括二维表,key-value 等多种格式的数据源,此外还支持输入 TypedArray 格式的数据。
千万数据的前端展现: 通过增量渲染技术(4.0+),配合各种细致的优化,ECharts 能够展现千万级的数据量。
移动端优化: 针对移动端交互做了细致的优化,例如移动端小屏上适于用手指在坐标系中进行缩放、平移。 PC 端也可以用鼠标在图中进行缩放(用鼠标滚轮)、平移等。
多渲染方案,跨平台使用: 支持以 Canvas、SVG(4.0+)、VML 的形式渲染图表。
深度的交互式数据探索:
提供了图例、视觉映射、数据区域缩放、tooltip、数据刷选等开箱即用的交互组件,可以对数据进行多维度数据筛取、视图缩放、展示细节等交互操作。
多维数据的支持以及丰富的视觉编码手段: 对于传统的散点图等,传入的数据也可以是多个维度的。
动态数据: 数据的改变驱动图表展现的改变。
绚丽的特效: 针对线数据,点数据等地理数据的可视化提供了吸引眼球的特效。
通过 GL 实现更多更强大绚丽的三维可视化: 在 VR,大屏场景里实现三维的可视化效果。
无障碍访问(4.0+): 支持自动根据图表配置项智能生成描述,使得盲人可以在朗读设备的帮助下了解图表内容,让图表可以被更多人群访问。

2.pyecharts安装与使用

在使用pyecharts之前,首先要安装它。在Windows命令行中使用以下命令来执行安装过程:

pip install pyecharts

执行后,可输入以下命令查看:

pip list

如用户需要用到地图图表,可自行安装对应的地图文件包。命令如下:

pip install echarts-countries-pypkg #安装全球国家地图
pip install echarts-china-provinces-pypkg#安装中国省级地图
pip install echarts-china-cities-pypkg#安装中国市级地图

在安装完地图库以后,即可进行地图的数据可视化显示。

3.全局配置项和系列配置项

图形的参数配置是数据可视化的基础,Pyecharts中的参数配置比较简单,可分为全局配置项和系列配置项

3.1 全局配置项

3.1.1 基本元素配置项

Pyecharts的基本元素配置项主要包括:InitOpts、ToolBoxFeatureOpts、ToolboxOpts、TitleOpts、DataZoomOpts、LegendOpts、VisualMapOpts、TooltipOpts等8个配置。
在这里插入图片描述
(1) InitOpts:
在这里插入图片描述
(2) ToolBoxFeatureOpts:
在这里插入图片描述
(3) ToolboxOpts:
在这里插入图片描述
(4) TitleOpts:
在这里插入图片描述
(5) DataZoomOpts :
在这里插入图片描述
(6) LegendOpts:在这里插入图片描述
(7) VisualMapOpts:
在这里插入图片描述
(8) TooltipOpts:
在这里插入图片描述

3.1.2 坐标轴配置项

Pyecharts的坐标轴配置项主要包括:AxisOpts、AxisLineOpts、AxisTickOpts、AxisPointerOpts、SingleAxisOpts等5个配置。

(1) AxisOpts:
在这里插入图片描述
(2) AxisLineOpts:
在这里插入图片描述

(3) AxisTickOpts:
在这里插入图片描述
(4) AxisPointerOpts:
在这里插入图片描述
(5) SingleAxisOpts:
在这里插入图片描述

3.1.3 原生图形配置项

Pyecharts的原生图形配置项主要包括:GraphicGroup、GraphicItem、GraphicBasicStyleOpts、GraphicShapeOpts、GraphicImage、GraphicText、GraphicTextStyleOpts、GraphicRect等8个配置。
(1) GraphicGroup:
在这里插入图片描述
(2) GraphicItem:
在这里插入图片描述
(3) GraphicBasicStyleOpts:
在这里插入图片描述
(4) GraphicShapeOpts:
在这里插入图片描述
(5) GraphicImage:
在这里插入图片描述
(6) GraphicText:
在这里插入图片描述
(7) GraphicTextStyleOpts:
在这里插入图片描述
(8) GraphicRect:
在这里插入图片描述

3.2 系列配置项

3.2.1 样式类配置项

Pyecharts的样式类配置项主要包括:ItemStyleOpts、TextStyleOpts、LabelOpts、LineStyleOpts、SplitLineOpts等5个配置。
(1) ItemStyleOpts:
在这里插入图片描述
(2) TextStyleOpts:
在这里插入图片描述
(3) LabelOpts:
在这里插入图片描述
(4) LineStyleOpts:
在这里插入图片描述
(5) SplitLineOpts:
在这里插入图片描述

3.2.2 标记类型配置项

Pyecharts的标记类型配置项主要包括:MarkPointItem、MarkPointOpts、MarkLineItem、MarkLineOpts、MarkAreaItem、MarkAreaOpts等6个配置。
(1) MarkPointItem:
在这里插入图片描述
(2) MarkPointOpts:
在这里插入图片描述
(3) MarkLineItem :
在这里插入图片描述
(4) MarkLineOpts:
在这里插入图片描述
(5) MarkAreaItem:
在这里插入图片描述
(6) MarkAreaOpts:
在这里插入图片描述

3.2.3 其它类配置项

Pyecharts的其它类配置项主要包括:EffectOpts、AreaStyleOpts、SplitAreaOpts等3个配置。
(1) EffectOpts:
在这里插入图片描述
(2) AreaStyleOpts:
在这里插入图片描述
(3) SplitAreaOpts:
在这里插入图片描述

4.运行环境

4.1 生成HTML

Pyecharts可以通过render函数生成HTML文件,下面的代码将结果生成html文件。
……
bar.render(‘bar.html’)

4.2 Jupyter Notebook

Pyecharts可以在Jupyter Notebook环境中运行。
……
bar.render_notebook()

4.3 Jupyter Lab

Pyecharts可以在Jupyter Lab环境中运行。
……
#第一次渲染时候调用load_javascript文件
bar.load_javascript()
bar.render_notebook()

5.Pyecharts可视化绘图

Pyecharts可以方便的绘制一些基础视图,包括柱状图,折线图,箱型图,涟漪散点图,K线图以及双坐标轴图等

5.1 柱状图

柱状图是一种把连续数据画成数据条的表现形式,通过比较不同组的柱状长度,从而对比不同组的数据量大小。
描绘柱状图的要素有3个:组数、宽度、组限。绘制柱状图时,不同组之间是有空隙的。柱状用来比较两个或以上的价值(不同时间或者不同条件),只有一个变量,通常利用与较小的数据集分析。柱状图也可以多维表达。

(1) 参数配置:
在这里插入图片描述
(2) 基本函数形式:
c = (
Bar()
.set_global_opts(title_opts=opts.TitleOpts(title=“Bar-基本示例”, subtitle=“我是副标题”,title_link=“https://pyecharts.org/#/zh-cn/”))
.add_xaxis(Faker.choose())
.add_yaxis(“商家A”, Faker.values())
.add_yaxis(“商家B”, Faker.values())
)

(3) 例:商家A与B商品订单数量分析
为了分析商家A与B商品订单数量,绘制了两个商家商品订单量的柱状图。
在这里插入图片描述

bar = Bar()

bar = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
    .add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
    .set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
)

5.2 折线图

折线图是用直线段将各个数据点连接起来而组成的图像,以折线方式显示数据的变化趋势。折线图可以显示随时间而变化的连续数据,因此非常适合显示相等时间间隔的数据趋势。在折线图中,类别数据沿水平轴均匀分布,数值数据沿垂直轴均匀分布。例如为了显示不同订单日期的销售额走势,可以创建不同订单日期的销售额折线图。

(1) 参数配置:
在这里插入图片描述
(2) 例:各门店销售业绩比较分析
为了比较企业门店销售业绩,绘制了各门店的销售额和利润额的折线图。
在这里插入图片描述
(3)基本函数形式:

line = Line()

line.set_global_opts(  
    title_opts = opts.TitleOpts(title = "门店销售额利润额的比较分析", subtitle = "2019年企业经营状况分析"),  
    toolbox_opts = opts.ToolboxOpts(),  
    legend_opts = opts.LegendOpts(is_show = True)  
)

line.add_xaxis(v1)
line.add_yaxis(“销售额”,v2,is_smooth = True) #is_smooth默认是False,即折线;is_selected默认是False,即不选中
line.add_yaxis("利润额",v3,is_smooth = True, is_selected = True)

5.3 饼图

在这里插入图片描述
基本函数形式:

c = (
    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="饼图"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
c.render_notebook()

5.4 箱型图

箱型图是一种用作显示一组数据分散情况资料的统计图。在各种领域也经常被使用,常见于品质管理。
箱型图主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。
箱型图的绘制方法是:先找出一组数据的上边缘、下边缘、中位数和两个四分位数;然后,连接两个四分位数画出箱体;再将上边缘和下边缘与箱体相连接,中位数位于箱体中。

(1) 参数配置:
在这里插入图片描述
(2) 例:2019年销售额和利润额分析
为了分析2019年的销售额和利润额情况,绘制了不同的箱型图
在这里插入图片描述
(3) 基本函数形式:

boxplot = Boxplot()

boxplot.set_global_opts(  
    title_opts = opts.TitleOpts(title = "2019年销售额和利润额分析",subtitle = "2019年企业经营状况分析"),  
    toolbox_opts = opts.ToolboxOpts(is_show = False),  
    legend_opts = opts.LegendOpts(is_show = True)  
)

boxplot.add_xaxis(["2019年业绩"])
boxplot.add_yaxis("销售额",boxplot.prepare_data([v2]))
boxplot.add_yaxis("利润额",boxplot.prepare_data([v3]))

5.5 涟漪散点图

涟漪散点图是一类特殊的散点图,只是散点图中带有涟漪特效,利用特效可以突出显示某些想要的数据。
(1) 参数配置:
在这里插入图片描述
(2) 例:涟漪散点图各种图形
在这里插入图片描述
(3) 基本函数形式:

es = EffectScatter()

es.set_global_opts(  
    title_opts = opts.TitleOpts(title = "涟漪散点图分布",subtitle = "各种类型"),  
    xaxis_opts = opts.AxisOpts(splitline_opts = opts.SplitLineOpts(is_show = True)),  
    yaxis_opts = opts.AxisOpts(splitline_opts = opts.SplitLineOpts(is_show = True)),  
    toolbox_opts = opts.ToolboxOpts(False),  
    legend_opts = opts.LegendOpts(is_show = True)  
)
es.add_xaxis(v1)
es.add_yaxis("",v2,symbol = SymbolType.ARROW)

es.render_notebook()

5.6 K线图

K线图又称蜡烛图,股市及期货市场中的K线图的画法包含四个数据,即开盘价,最高价,最低价,收盘价,所有的K线都是围绕这四个指标展开,反映股票的情况。
如果把每日的K线图放在一张纸上,就能得到日K线图,同样也可以画出周K线图,月K线图。

(1) 参数配置:
在这里插入图片描述
(2) 例:企业股票价格趋势分析
在这里插入图片描述
(3) 基本函数形式:

c = (
    Kline()
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(is_scale=True),
        yaxis_opts=opts.AxisOpts(
            is_scale=True,
            splitarea_opts=opts.SplitAreaOpts(
                is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
            ),
        ),
        datazoom_opts=[opts.DataZoomOpts(pos_bottom="-2%")],
        title_opts=opts.TitleOpts(title="Kline-ItemStyle"),
    )
    .add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
    .add_yaxis(
        "kline",
        data,
        itemstyle_opts=opts.ItemStyleOpts(
            color="#ec0000",
            color0="#00da3c",
            border_color="#8A0000",
            border_color0="#008F28",
        ),
    )
)

5.7 雷达图

在这里插入图片描述
基本函数形式:

c = (
    Radar()
    .add_schema(
        schema=[
            ……
        ]
    )
    .add("预算分配", v1,linestyle_opts=opts.LineStyleOpts(color="#CD0000"))
    .add("实际开销", v2,linestyle_opts=opts.LineStyleOpts(color="#5CACEE"))
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Radar-单例模式"),
    )
)

6. Bar的基本使用

import pyecharts.options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
    Bar()
    .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题",title_link="https://pyecharts.org/#/zh-cn/"))
    .add_xaxis(Faker.choose())
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())  
) 
c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

x = [0,1,2,3,4,5]
y = [1,2,3,2,4,3]

c = Bar()
c.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="pyecharts",title_link="https://pyecharts.org/#/zh-cn/"))
c.add_xaxis(x)
c.add_yaxis("示例", y)  #'label',数值
# c.add_yaxis("商家B", Faker.values())  

c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

x = ['战狼2','速度与激情8','功夫瑜伽','西游伏妖篇',
     '变形金刚5:最后的骑士','摔跤吧!爸爸',
     '加勒比海盗5:死无对证','金刚:骷髅岛',
     '极限特工:终极回归','生化危机6:终章',
     '乘风破浪','神偷奶爸3','智取威虎山','大闹天竺',
     '金刚狼3:殊死一战','蜘蛛侠:英雄归来','悟空传',
     '银河护卫队2','情圣','新木乃伊']

y = [56.01,26.94,17.53,16.49,15.45,12.96,
     11.8,11.61,11.28,11.12,10.49,10.3,8.75,
     7.55,7.32,6.99,6.88,6.86,6.58,6.23]

c = Bar()
c.set_global_opts(title_opts=opts.TitleOpts(title="电影票房", subtitle="pyecharts"))
c.add_xaxis(x)
c.add_yaxis("示例", y)  #'label',数值
# c.add_yaxis("商家B", Faker.values())  
c.reversal_axis()

c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

a = ['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']

b_14 = [2358,399,2358,362]
b_15 = [12357,156,2045,168]
b_16 = [15746,312,4497,319]

c = Bar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))

c.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="pyecharts"))
c.add_xaxis(a)
c.add_yaxis("14日票房", b_14, gap = '0%')  #'label',数值
c.add_yaxis("15日票房", b_15, gap = '0%') 
c.add_yaxis("16日票房", b_16, gap = '0%') 

# c.add_yaxis("商家B", Faker.values())  

c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

a = ['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']

b_14 = [2358,399,2358,362]
b_15 = [12357,156,2045,168]
b_16 = [15746,312,4497,319]

c = Bar(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))

c.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="pyecharts"))
c.add_xaxis(a)
c.add_yaxis("14日票房", b_14, gap = '0%', stack = '1')  #'label',数值
c.add_yaxis("15日票房", b_15, gap = '0%', stack = '1') 
c.add_yaxis("16日票房", b_16, gap = '0%') 
c.set_series_opts(label_opts=opts.LabelOpts(is_show=False))

# c.add_yaxis("商家B", Faker.values())  

c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

a = ['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']

b_14 = [2358,399,2358,362]
b_15 = [12357,156,2045,168]
b_16 = [15746,312,4497,319]

c = Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))

c.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="pyecharts"))
c.add_xaxis(a)
c.add_yaxis("14日票房", b_14, gap = '0%')  #'label',数值
c.add_yaxis("15日票房", b_15, gap = '0%') 
c.add_yaxis("16日票房", b_16, gap = '0%') 
c.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                  markline_opts=opts.MarkLineOpts(
                     data=[
                         opts.MarkLineItem(type_="max", name="最大值"),
#                          opts.MarkPointItem(type_="min", name="最小值"), 
#                          opts.MarkPointItem(type_="average", name="平均值"),
                     ]
                  )
                 )

# c.add_yaxis("商家B", Faker.values())  

c.render_notebook()

在这里插入图片描述

7. Line的基本使用

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

a = ['猩球崛起3:终极之战','敦刻尔克','蜘蛛侠:英雄归来','战狼2']

b_14 = [2358,399,2358,362]
b_15 = [12357,156,2045,168]
b_16 = [15746,312,4497,319]

c = Line(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))

c.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="pyecharts"))
c.add_xaxis(a)
c.add_yaxis("14日票房", b_14)  #'label',数值
c.add_yaxis("15日票房", b_15) 
c.add_yaxis("16日票房", b_16) 
c.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                  markline_opts=opts.MarkLineOpts(
                     data=[
                         opts.MarkLineItem(type_="max", name="最大值"),
#                          opts.MarkPointItem(type_="min", name="最小值"), 
#                          opts.MarkPointItem(type_="average", name="平均值"),
                     ]
                  )
                 )

# c.add_yaxis("商家B", Faker.values())  

c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

c = Line()
c.add_xaxis(Faker.choose())
c.add_yaxis("商家A", Faker.values())
c.add_yaxis("商家B", Faker.values())
c.set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

x = range(0,10,2)
y = [2,1,3,5,4]

c = Line()
c.add_xaxis(x)
c.add_yaxis("商家A", y, is_smooth = True,
            symbol="circle",
        symbol_size=15,
        linestyle_opts=opts.LineStyleOpts(color="green", width=3, type_="dashed"),
        label_opts=opts.LabelOpts(is_show=False),
        itemstyle_opts=opts.ItemStyleOpts(
            border_width=2, border_color="orange", color="purple"
        ),)
# c.add_yaxis("商家B", Faker.values())
c.set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
c.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                  markpoint_opts=opts.MarkPointOpts(
                     data=[
                         opts.MarkPointItem(type_="max", name="最大值"),
                         opts.MarkPointItem(type_="min", name="最小值"),
#                          opts.MarkPointItem(type_="average", name="平均值"),
                     ]
                  )
                 )

c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker

x = range(0,10,2)
y = [2,1,3,5,4]

c = Line()
c.add_xaxis(x)
c.add_yaxis("商家A", y, is_smooth = True,
            symbol="circle",
        symbol_size=15,
        linestyle_opts=opts.LineStyleOpts(color="green", width=3, type_="dashed"),
        label_opts=opts.LabelOpts(is_show=False),
        itemstyle_opts=opts.ItemStyleOpts(
            border_width=2, border_color="orange", color="purple"
        ),
        areastyle_opts=opts.AreaStyleOpts(opacity=0.3))
# c.add_yaxis("商家B", Faker.values())
c.set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
c.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                  markpoint_opts=opts.MarkPointOpts(
                     data=[
                         opts.MarkPointItem(type_="max", name="最大值"),
                         opts.MarkPointItem(type_="min", name="最小值"),
#                          opts.MarkPointItem(type_="average", name="平均值"),
                     ]
                  )
                 )

c.render_notebook()

在这里插入图片描述

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.globals import ThemeType

v1 = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
v2 = [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120] #北京
v3 = [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79] #天津

c = (
    Line(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
    .set_global_opts(title_opts=opts.TitleOpts(title="北京与天津个月销售数量分布的折线图"),legend_opts=opts.LegendOpts(is_show=True),datazoom_opts=opts.DataZoomOpts(),
             axispointer_opts= opts.AxisOpts(boundary_gap=["20%","20%"]))
    .add_xaxis(v1)
    .add_yaxis("北京",v2,stack=1,is_smooth=True,areastyle_opts=opts.AreaStyleOpts(opacity=0.5,color="purple"))
    .add_yaxis("天津", v3,stack=1,is_smooth=True,areastyle_opts=opts.AreaStyleOpts(opacity=0.5,color="red"))  
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                     markpoint_opts=opts.MarkPointOpts(
                     data=[
                         opts.MarkPointItem(type_="max", name="最大值"),
                         opts.MarkPointItem(type_="min", name="最小值"), 
                         opts.MarkPointItem(type_="average", name="平均值"),
                     ]))
) 
c.render_notebook()

在这里插入图片描述

8. 饼图的基本使用

from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType  #定制主题

c = Pie()
c.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
c.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])
c.set_global_opts(title_opts=opts.TitleOpts(title="饼图"))
c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))

c.render_notebook()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

matplotlib.rcParams['font.family'] = ['Kaiti'] #设置字体
plt.figure(figsize = (5,5),dpi = 100)

sizes = [45,30,15,10] #设置每部分大小
labels = ['计算机系','机械系','管理系','社科系']
explode = [0.1,0,0,0] #设置每部分凹凸
colors = ['c','g','b','m']

plt.pie(sizes,
        labels = labels,
        explode = explode,
        colors = colors,
        labeldistance = 1,
        autopct = '%.1f%%',
        counterclock = False,
        startangle = 90,
        shadow = True)

plt.title('饼图',fontsize = 20);#设置标题
plt.show()

在这里插入图片描述

from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType  #定制主题

sizes = [45,30,15,10] #设置每部分大小
labels = ['计算机系','机械系','管理系','社科系']

c = Pie()
c.add("", [list(z) for z in zip(labels, sizes)])
c.set_colors(["blue", "green", "yellow", "red"])
c.set_global_opts(title_opts=opts.TitleOpts(title="饼图"))
c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))

c.render_notebook()

在这里插入图片描述

from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType  #定制主题

sizes = [45,30,15,10] #设置每部分大小
labels = ['计算机系','机械系','管理系','社科系']

c = Pie(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
c.add("", [list(z) for z in zip(labels, sizes)],radius=["40%", "75%"])
# c.set_colors(["blue", "green", "yellow", "red"])
c.set_global_opts(title_opts=opts.TitleOpts(title="饼图"))
c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))

c.render_notebook()

在这里插入图片描述

from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType  #定制主题

sizes = [45,30,15,10] #设置每部分大小
labels = ['计算机系','机械系','管理系','社科系']

c = Pie(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
c.add("", [list(z) for z in zip(labels, sizes)],
      radius=["25%", "60%"],
      center=["25%", "50%"],
      rosetype="radius")

c.add("", [list(z) for z in zip(labels, Faker.values())],
      radius=["25%", "75%"],
      center=["75%", "50%"],
      rosetype="radius")
# c.set_colors(["blue", "green", "yellow", "red"])
c.set_global_opts(title_opts=opts.TitleOpts(title="饼图"))
c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))

c.render_notebook()

在这里插入图片描述

from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.globals import ThemeType

v1 = ["鲁帆", "章戎", "王海强", "诸葛菠萝", "徐天宏", "张明"]
v2 = [25, 14, 12, 28, 8, 5]
v2 = sorted(v2)
c = (
     Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
    .set_global_opts(title_opts=opts.TitleOpts(title="不同人发送邮件数量"))
    .add("", [list(z) for z in zip(v1, v2)],radius=['10%', '70%'],center=['50%', '50%'],rosetype="radius")
#     .set_colors(
#         ['rgb({r},10,{b})'.format(r=255-20*(len(v2)-x+1), b=255-15*x) for x in range(len(v2))]
#     )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
    )
c.render_notebook()

在这里插入图片描述

9. 本章小结

(1)ECharts是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,并能够兼容当前绝大部分浏览器。在功能上,ECharts可以提供直观,交互丰富,可高度个性化定制的数据可视化图表。
(2)pyecharts 是一个用于生成 Echarts 图表的类库,是一款将Python与ECharts相结合的强大的数据可视化工具,使用pyecharts可以让开发者轻松的实现大数据的可视化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/18226.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4。计算机组成原理(2)存储系统

嵌入式软件开发,非科班专业必须掌握的基本计算机知识 核心知识点:数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统 这一部分主要讲解了CPU的组成和扩容、CPU与存储器(主存、辅存、缓存)的连接 一 存储…

基于人工智能AI视频分析的智慧安监解决方案

方案背景 为了保证对园区环境风险进行有效识别,传统视频监控存在视频结构化利用率低的问题,在实际使用过程中,安全管理人员工作效率低下,依靠人工肉眼查看灵活度低,风险漏报概率高,出现异常情况跟踪不及时&…

VS2019 c++ cmake项目 打包并使用 (lib\dlll)

背景 最近项目中经常调用第三方库、带头文件、lib和dll的库,需要使用cmake进行项目管理,之前一直比较糊涂这方面,在这里做一个整理总结 编译汇编过程 静态链接方式: 把lib里面编译好的东西(函数、变量等&#xff09…

海量请求下,高并发接口的设计思路

1. 背 景 虽然现在很多人,动不动就提什么高并发、请求量多大,数据量多少多少,但我可以很认真地说,那都是他妈的在吹牛! 生产环境,真正有大请求量的,就那么几个业务场景,而且多是面…

算法记录 | Day56 动态规划

583.两个字符串的删除操作 思路: 1.确定dp数组(dp table)以及下标的含义:dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数…

网络协议与攻击模拟-05-ICMP协议

ICMP 协议 1、理解 ICMP 协议 2、理解 ICMP 重定向 3、会使用 wireshark 分析 ICMP 重定向流量实验 一、 ICMP 基本概念 1、 ICMP 协议 Internet 控制报文协议,用于在 IP 主机、路由器之间传递控制消息,控制消息指网络通不通、主机是否可达、路由是否…

iview-admin首页的图表数据渲染问题

iview-admin的首页有几个图表&#xff0c;应该是作者自己封装的&#xff0c;有个问题是在mounted时&#xff0c;从后台获取数据&#xff0c;应该把图表根据数据重新渲染一下。 <chart-bar id"myChart" style"height: 260px;" :value"barData"…

全方位揭秘!大数据从0到1的完美落地之Shuffle和调优

MapReduce高级 shuffle阶段 概述 MapReduce会确保每个reducer的输入都是按键排序的。从map方法输出数据开始、到作为输入数据传给reduce方法的过程称为shuffle。在此&#xff0c;我们将学习shuffle是如何工作的&#xff0c;因为它有助于我们理解工作机制&#xff08;如果需要…

前端008_类别模块_新增功能

类别模块_新增功能 1、需求分析2、新增窗口实现3、列表引用新增组件4、关闭弹出窗口5、校验表单数据6、提交表单数据6.1、Mock 添加新增模拟接口6.2、Api 调用接口6.3、测试新增功能1、需求分析 点击 新增 按钮后,对话框形式弹出新增窗口输入分类信息后,点击 确定 提交表单数…

【递推专题】常见的递推“模型”总结

目录 1.斐波那契数列分析&#xff1a;代码&#xff1a; 2.平面分割问题分析&#xff1a; 3.汉诺塔问题分析&#xff1a; 4.卡特兰数分析&#xff1a; 5.第二类斯特林数总结&#xff1a; 1.斐波那契数列 分析&#xff1a; 斐波那契数列又称兔子数列&#xff0c;其原理来源于兔子…

测试知识总结

1.影响ui自动化稳定性 异常弹出对话框 --异常场景库 页面控件元素属性的细微变化--模糊匹配 延迟 --- retry 数据 -- 数据已被使用 2. 移动端应用细分为三大类&#xff1a;Web App、Native App&#xff08;原生应用&#xff09; 和 Hybrid App&#xff08;混合应用&…

第二十四章 Unity 纹理贴图

通常情况下&#xff0c;3D网格模型只能展示游戏对象的几何形状&#xff0c;而表面的细节则纹理贴图提供。纹理贴图通过UV坐标“贴附”在模型的表面。当然&#xff0c;这个过程不需要我们在Unity中完成&#xff0c;而是在建模软件中完成的。通常情况下&#xff0c;我们通过3ds m…

JavaScript:二叉树(前序遍历,中序遍历,后序遍历,递归法,统一迭代法)

文章目录 二叉树递归法迭代法 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09;二叉树的递归遍历递归法作图分析代码和思路分析 二叉树的迭代遍历前序遍历迭代分析代码及思路分析 94. 二叉树的中序遍历递归法作图举例递归流程 迭代法代码 145. 二叉树的后序遍历 …

制作Alpine Linux镜像报错errors: 15 distinct packages available

1.执行报错 执行docker build -t 镜像:版本 -f Dockerfile . 报错&#xff1a; 2.查看网上的解决思路 网上文档解决思路&#xff1a; 这边我做了一下改变把这些写入了dockerfile 加了几个RUN RUN rm -rf /var/cache/apk RUN mkdir -p /var/cache/apk RUN apk update -v 发现还…

mongodb分片集群搭建

1.本次搭建使用三台centos7主机搭建伪集群&#xff0c;关闭防火墙和selinux服务 2.mongodb架构相当于9个分片节点&#xff0c;3个路由节点&#xff0c;3个配置节点&#xff0c;主机信息如下图所示 主机名称主机ip地址端口服务A10.1.60.11420001&#xff0c;21001&#xff0c;…

Visual Studio 2019离线安装包获取和安装教程

摘要 介绍Visual Studio 2019离线安装方法和配置及注意事项 关键词 VS2019 离线安装 Visual Studio 2019版本与以往的2015、2013、2012版本不同&#xff0c;采用了新的模块化安装方法。微软官方也并未提供ISO镜像&#xff0c;根据官方提供的离线下载方案&#xff08;docs.mic…

JMeter开发web及手机APP自动化脚本练习

&#xff08;一&#xff09;开发web自动化脚本练习 一、打开浏览器代理服务器设置 我这里用的是360浏览器&#xff0c;打开浏览器代理服务器设置&#xff0c;端口要与jmeter中的端口设置保持一致哦。 二、JMeter设置代理 JMeter设置代理&#xff08;jmeter中的端口要与360浏览…

数据发送流程

在发送模式下&#xff0c;UART 的串行数据发送电路主要包括一个发送移位寄存器(TSR)&#xff0c;TSR 功能是将数据 逐个移位送出。待发数据必须先写到发送缓冲区中。 TXIFx 是发送中断标志位&#xff0c;可配置为发送缓冲区空或TSR 空。 数据的发送支持7bit 、8bit 或9bit 数据…

JAVA基础:Scanner类中next(), nextLine(), hasNext(), hasNextLine()

一、next() : 只读缓冲区中空格之前的数据,并且光标指向本行。二、nextLine() : 读取除回车以外的所有符号(整行内容)&#xff0c;光标定位在下一行三、hasNext() &#xff1a;检查下一个标记&#xff08;token&#xff09;&#xff0c;也就是以空格、制表符或换行符为分隔符的…

大数据技术之Kettle

目录 第1章 Kettle概述 1.1 ETL简介 1.2 Kettle简介1.2.1 Kettle是什么 1.2.2 Kettle的两种设计 1.2.3 Kettle的核心组件 1.2.4 Kettle特点 第2章 Kettle安装部署 2.1 Kettle下载 2.1.1 下载地址 2.1.2 Kettle目录说明 2.1.3 Kettle文件说明 2.2 Kettle安装部署 …