【四 (5)数据可视化之 Pyecharts常用图表及代码实现 】

news2024/11/25 20:26:44

目录

    • 文章导航
    • 一、介绍
    • [✨ 特性]
    • 二、安装Pyecharts
    • 三、主题风格
    • 四、占比类图表
      • 1、饼图
      • 2、环形图
      • 3、玫瑰图
      • 4、玫瑰图-多图
      • 5、堆叠条形图
      • 6、百分比堆叠条形图
    • 五、比较排序类
      • 1、条形图
      • 2、雷达图
      • 3、词云图
      • 4、漏斗图
    • 六、趋势类图表
      • 1、折线图
      • 2、堆叠折线图
      • 3、面积图
      • 4、堆叠面积图
    • 七、频率分布类
      • 1、直方图
      • 2、箱线图
    • 八、关系类图表
      • 1、散点图
      • 2、多图例散点图
      • 3、气泡图
      • 4、热力图
    • 九、地理类图表
      • 1、地图
    • 十、突出类图表
      • 1、仪表盘
    • 十一、组合图表
      • 1、overlap
      • 2、grid-并行多图
      • 3、page-顺序多图
      • 4、tab-选项卡多图
      • 5、timeline-时间线轮播多图

文章导航

【一 简明数据分析进阶路径介绍(文章导航)】

一、介绍

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

[✨ 特性]

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

二、安装Pyecharts

pip install pyecharts

三、主题风格

pyecharts有多种风格,可参考
https://pyecharts.org/#/zh-cn/themes

四、占比类图表

1、饼图

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

df = pd.read_csv('train.csv')

# 按'SaleCondition'字段统计记录数  
sale_condition_counts = df['SaleCondition'].value_counts().reset_index()  
sale_condition_counts.columns = ['SaleCondition', 'Count']  
  
# 将统计结果转换为列表,用于pyecharts饼图  
data_pair = [(row['SaleCondition'], row['Count']) for index, row in sale_condition_counts.iterrows()] 

c = (
    Pie(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add("", data_pair)
    #.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}"))
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

2、环形图

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

df = pd.read_csv('train.csv')

# 按'SaleCondition'字段统计记录数  
sale_condition_counts = df['SaleCondition'].value_counts().reset_index()  
sale_condition_counts.columns = ['SaleCondition', 'Count']  
  
# 将统计结果转换为列表,用于pyecharts饼图  
data_pair = [(row['SaleCondition'], row['Count']) for index, row in sale_condition_counts.iterrows()] 

c = (
    Pie(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add("", data_pair, radius=["40%", "75%"])
    #.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}"))
)
# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

3、玫瑰图

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

df = pd.read_csv('train.csv')

# 按'SaleCondition'字段统计记录数  
sale_condition_counts = df['SaleCondition'].value_counts().reset_index()  
sale_condition_counts.columns = ['SaleCondition', 'Count']  
  
# 将统计结果转换为列表,用于pyecharts饼图  
data_pair = [(row['SaleCondition'], row['Count']) for index, row in sale_condition_counts.iterrows()] 

c = (
    Pie(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add("", data_pair, 
         radius=["40%", "75%"],
         rosetype="area") #radius/area
    .set_global_opts(title_opts=opts.TitleOpts(title="玫瑰图"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

4、玫瑰图-多图

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

df = pd.read_csv('train.csv')

# 按'SaleCondition'字段统计记录数  
sale_condition_counts = df['SaleCondition'].value_counts().reset_index()  
sale_condition_counts.columns = ['SaleCondition', 'Count']  
  
# 将统计结果转换为列表,用于pyecharts饼图  
data_pair = [(row['SaleCondition'], row['Count']) for index, row in sale_condition_counts.iterrows()] 

c = (
    Pie(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add("", data_pair, 
         radius=["40%", "75%"],
         center=["25%", "50%"],
         rosetype="area") #radius/area
    .add("", data_pair, 
         radius=["40%", "75%"],
         center=["75%", "50%"],
         rosetype="area") #radius/area
    .set_global_opts(title_opts=opts.TitleOpts(title="玫瑰图-多图"))
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

5、堆叠条形图

from pyecharts import options as opts
from pyecharts.charts import Bar
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv')  
  
result = df.groupby('YrSold').agg({  
    'OverallQual': 'sum',  
    'GarageCars': 'sum',  
    'FullBath': 'sum'  
}).reset_index()  
  
result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  

result_sorted_des = result.sort_values('YrSold', ascending=True)

xaxis = result_sorted_des['YrSold'].tolist()
yaxis_1 = result_sorted_des['OverallQual'].tolist()
yaxis_2 = result_sorted_des['GarageCars'].tolist()
yaxis_3 = result_sorted_des['FullBath'].tolist()

c = (
    Bar(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(xaxis)
    .add_yaxis("商家A", yaxis_1, stack="stack1")
    .add_yaxis("商家B", yaxis_2, stack="stack1")
    .add_yaxis("商家C", yaxis_3, stack="stack1")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="堆叠条形图"))
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

6、百分比堆叠条形图

from pyecharts import options as opts  
from pyecharts.charts import Bar  
import pandas as pd    
from pyecharts.globals import ThemeType  
  
# 读取数据并处理  
df = pd.read_csv('train.csv')    
result = df.groupby('YrSold').agg({    
    'OverallQual': 'sum',    
    'GarageCars': 'sum',    
    'FullBath': 'sum'    
}).reset_index()    
result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']    
result_sorted_des = result.sort_values('YrSold', ascending=True)  
  
# 计算每个年份的累计和  
total_per_year = result_sorted_des[['OverallQual', 'GarageCars', 'FullBath']].sum(axis=1)  
  
# 计算每个特征的百分比  
result_sorted_des['OverallQual_pct'] = (result_sorted_des['OverallQual'] / total_per_year).round(2) * 100  
result_sorted_des['GarageCars_pct'] = (result_sorted_des['GarageCars'] / total_per_year).round(2) * 100  
result_sorted_des['FullBath_pct'] = (result_sorted_des['FullBath'] / total_per_year).round(2) * 100  
  
# 提取数据用于图表  
xaxis = result_sorted_des['YrSold'].tolist()  
yaxis_1 = result_sorted_des['OverallQual_pct'].tolist()  
yaxis_2 = result_sorted_des['GarageCars_pct'].tolist()  
yaxis_3 = result_sorted_des['FullBath_pct'].tolist()  
  
# 创建百分比堆叠条形图  
c = (  
    Bar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN))  
    .add_xaxis(xaxis)  
    .add_yaxis("OverallQual", yaxis_1, stack="stack1")  
    .add_yaxis("GarageCars", yaxis_2, stack="stack1")  
    .add_yaxis("FullBath", yaxis_3, stack="stack1")  
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="right",formatter="{c}%", rotate=0))  # 显示百分比  
    .set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=True, trigger="item"),
                     title_opts=opts.TitleOpts(title="百分比堆叠条形图"))  
)  
  
# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

五、比较排序类

1、条形图

from pyecharts import options as opts
from pyecharts.charts import Bar
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv')  
  
result = df.groupby('YrSold').agg({  
    'OverallQual': 'sum',  
    'GarageCars': 'sum',  
    'FullBath': 'sum'  
}).reset_index()  
  
result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  
  
result_sorted_desc = result.sort_values('YrSold', ascending=False)
    
xaxis = result_sorted_desc['YrSold'].tolist()
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()

c = (
    Bar(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(xaxis)
    .add_yaxis("商家A", yaxis_1)
    .add_yaxis("商家B", yaxis_2)
    .add_yaxis("商家C", yaxis_3)
#     .reversal_axis()  # 坐标轴反转
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="条形图"))
)
# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

2、雷达图

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

v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]
c = (
    Radar(init_opts=opts.InitOpts(theme=ThemeType.WALDEN))
    .add_schema(
        schema=[
            opts.RadarIndicatorItem(name="销售", max_=6500),
            opts.RadarIndicatorItem(name="管理", max_=16000),
            opts.RadarIndicatorItem(name="信息技术", max_=30000),
            opts.RadarIndicatorItem(name="客服", max_=38000),
            opts.RadarIndicatorItem(name="研发", max_=52000),
            opts.RadarIndicatorItem(name="市场", max_=25000),
        ]
    )
    .add("预算分配", v1,areastyle_opts=opts.AreaStyleOpts(opacity=0.1,color="#CD0000"),linestyle_opts=opts.LineStyleOpts(color="#CD0000"))
    .add("实际开销", v2,areastyle_opts=opts.AreaStyleOpts(opacity=0.2,color="#5CACEE"),linestyle_opts=opts.LineStyleOpts(color="#5CACEE"))
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        #legend_opts=opts.LegendOpts(selected_mode="single"),
        title_opts=opts.TitleOpts(title="雷达图"),
    )
    
)

# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

3、词云图

from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType


words = [
    ("Sam S Club", 10000),
    ("Macys", 6181),
    ("Amy Schumer", 4386),
    ("Jurassic World", 4055),
    ("Charter Communications", 2467),
    ("Chick Fil A", 2244),
    ("Planet Fitness", 1868),
    ("Pitch Perfect", 1484),
    ("Express", 1112),
    ("Home", 865),
    ("Johnny Depp", 847),
    ("Lena Dunham", 582),
    ("Lewis Hamilton", 555),
    ("KXAN", 550),
    ("Mary Ellen Mark", 462),
    ("Farrah Abraham", 366),
    ("Rita Ora", 360),
    ("Serena Williams", 282),
    ("NCAA baseball tournament", 273),
    ("Point Break", 265),
]
c = (
    WordCloud(init_opts=opts.InitOpts(theme=ThemeType.WALDEN))
    .add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND)
    .set_global_opts(title_opts=opts.TitleOpts(title="词云图"))
)

# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

4、漏斗图

import pyecharts.options as opts
from pyecharts.charts import Funnel

x_data = ["展现", "点击", "访问", "咨询", "订单"]
y_data = [100, 80, 60, 40, 20]

data = [[x_data[i], y_data[i]] for i in range(len(x_data))]

c = (
    Funnel()
    .add(
        series_name="",
        data_pair=data,
        gap=2,
        tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{b} : {c}%"),
        label_opts=opts.LabelOpts(is_show=True, position="inside"),
        itemstyle_opts=opts.ItemStyleOpts(border_color="#fff", border_width=1),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="漏斗图", subtitle="漏斗图"))
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="right",formatter="{c}", rotate=0))  # 显示内容
)

# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

六、趋势类图表

1、折线图

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv')  
  
result = df.groupby('YrSold').agg({  
    'OverallQual': 'sum',  
    'GarageCars': 'sum',  
    'FullBath': 'sum'  
}).reset_index()  
  
result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  
  
result_sorted_desc = result.sort_values('YrSold', ascending=False)
    
xaxis = result_sorted_desc['YrSold'].tolist()
xaxis = [str(i) for i in xaxis]  #x轴不能用数字 
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()

c = (
    Line(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(xaxis)
    .add_yaxis("OverallQual", yaxis_1)
    .add_yaxis("GarageCars", yaxis_2)
    .add_yaxis("FullBath", yaxis_3)
    #.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="折线图"))
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

2、堆叠折线图

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv')  
  
result = df.groupby('YrSold').agg({  
    'OverallQual': 'sum',  
    'GarageCars': 'sum',  
    'FullBath': 'sum'  
}).reset_index()  
  
result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  
  
result_sorted_desc = result.sort_values('YrSold', ascending=False)
    
xaxis = result_sorted_desc['YrSold'].tolist()
xaxis = [str(i) for i in xaxis]  #x轴不能用数字 
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()

c = (
    Line(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(xaxis_data=xaxis)
    .add_yaxis(
        series_name="OverallQual",
        stack="总量",
        y_axis=yaxis_1,
#         areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="GarageCars",
        stack="总量",
        y_axis=yaxis_2,
#         areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="FullBath",
        stack="总量",
        y_axis=yaxis_3,
#         areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="堆叠折线图"),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
        xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
    )
)
# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

3、面积图

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv')  
  
result = df.groupby('YrSold').agg({  
    'OverallQual': 'sum',  
    'GarageCars': 'sum',  
    'FullBath': 'sum'  
}).reset_index()  
  
result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  
  
result_sorted_desc = result.sort_values('YrSold', ascending=False)
    
xaxis = result_sorted_desc['YrSold'].tolist()
xaxis = [str(i) for i in xaxis]  #x轴不能用数字 
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()

c = (
    Line(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(xaxis)
    .add_yaxis("OverallQual", yaxis_1, areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
    .add_yaxis("GarageCars", yaxis_2, areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
    .add_yaxis("FullBath", yaxis_3, areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
    #.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(title_opts=opts.TitleOpts(title="面积图"))
)
# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

4、堆叠面积图

from pyecharts import options as opts
from pyecharts.charts import Line
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv')  
  
result = df.groupby('YrSold').agg({  
    'OverallQual': 'sum',  
    'GarageCars': 'sum',  
    'FullBath': 'sum'  
}).reset_index()  
  
result.columns = ['YrSold', 'OverallQual', 'GarageCars', 'FullBath']  
  
result_sorted_desc = result.sort_values('YrSold', ascending=False)
    
xaxis = result_sorted_desc['YrSold'].tolist()
xaxis = [str(i) for i in xaxis]  #x轴不能用数字 
yaxis_1 = result_sorted_desc['OverallQual'].tolist()
yaxis_2 = result_sorted_desc['GarageCars'].tolist()
yaxis_3 = result_sorted_desc['FullBath'].tolist()

c = (
    Line(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(xaxis_data=xaxis)
    .add_yaxis(
        series_name="OverallQual",
        stack="总量",
        y_axis=yaxis_1,
        areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="GarageCars",
        stack="总量",
        y_axis=yaxis_2,
        areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add_yaxis(
        series_name="FullBath",
        stack="总量",
        y_axis=yaxis_3,
        areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="堆叠面积图"),
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"),
        yaxis_opts=opts.AxisOpts(
            type_="value",
            axistick_opts=opts.AxisTickOpts(is_show=True),
            splitline_opts=opts.SplitLineOpts(is_show=True),
        ),
        xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False),
    )
)
# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

七、频率分布类

1、直方图

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

df = pd.read_csv('train.csv').head(100)

sale_condition_counts = df['YearBuilt'].value_counts().reset_index()  
sale_condition_counts.columns = ['YearBuilt', 'Count']

x_data = sale_condition_counts.YearBuilt.tolist()
y_data = sale_condition_counts.Count.tolist()


c = (
    Bar(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(x_data)
    .add_yaxis("Count", y_data, category_gap=0)
    .set_global_opts(title_opts=opts.TitleOpts(title="直方图"))
)

# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

2、箱线图

from pyecharts import options as opts
from pyecharts.charts import Boxplot

v1 = [
    [850, 740, 900, 1070, 930, 850, 950, 980, 980, 880, 1000, 980],
    [960, 940, 960, 940, 880, 800, 850, 880, 900, 840, 830, 790],
]
v2 = [
    [890, 810, 810, 820, 800, 770, 760, 740, 750, 760, 910, 920],
    [890, 840, 780, 810, 760, 810, 790, 810, 820, 850, 870, 870],
]

c = (
    Boxplot(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(["expr1", "expr2"])
    .add_yaxis("A", v1)
    .add_yaxis("B", v2)
    .set_global_opts(title_opts=opts.TitleOpts(title="箱线图"))
)

# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

八、关系类图表

1、散点图

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv').head(100)  
df = df.sort_values('GrLivArea', ascending=True)
df[['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']]
x_data = df.GrLivArea.to_list()
x_data = [str(i) for i in x_data]  #x轴不能用数字 
y_data = df.SalePrice.to_list()

c = (
    Scatter(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(x_data)
    .add_yaxis("GrLivArea", y_data)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False, position="right",formatter="{c}", rotate=0))    
    .set_global_opts(
        title_opts=opts.TitleOpts(title="散点图"),
        visualmap_opts=opts.VisualMapOpts(max_=500000, min_=100000),
    )
)

# 渲染图表到notebook  
c.render_notebook() 

在这里插入图片描述

2、多图例散点图

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv').head(100)  
df = df.sort_values('GrLivArea', ascending=True)
df[['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']]
x_data = df.SalePrice.to_list()
x_data = [str(i) for i in x_data]  #x轴不能用数字 
y_data = df.GrLivArea.to_list()
y_data1 = df.YearBuilt.to_list()

c = (
    Scatter(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(x_data)
    .add_yaxis("GrLivArea", y_data)
    .add_yaxis("YearBuilt", y_data1)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False, position="right",formatter="{c}", rotate=0))    
    .set_global_opts(
        title_opts=opts.TitleOpts(title="散点图"),
        visualmap_opts=opts.VisualMapOpts(max_=500000, min_=100000),
    )
)

# 渲染图表到notebook  
c.render_notebook()  

在这里插入图片描述

3、气泡图

from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker
import pandas as pd  
from pyecharts.globals import ThemeType
  
df = pd.read_csv('train.csv').head(100)  
df = df.sort_values('GrLivArea', ascending=True)
df[['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']]
x_data = df.GrLivArea.to_list()
x_data = [str(i) for i in x_data]  #x轴不能用数字 
y_data = df.SalePrice.to_list()

c = (
    Scatter(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add_xaxis(x_data)
    .add_yaxis("GrLivArea", y_data)
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False, position="right",formatter="{c}", rotate=0))    
    .set_global_opts(
        title_opts=opts.TitleOpts(title="气泡图"),
        visualmap_opts=opts.VisualMapOpts(type_="size",max_=500000, min_=100000),
    )
)

# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

4、热力图

from pyecharts.charts import HeatMap  
from pyecharts import options as opts  
import pandas as pd  
  
# 读取CSV文件的前100行  
df = pd.read_csv('train.csv').head(100)  
  
# 选择你关心的列  
df_date = df[['SalePrice', 'OverallQual', 'GrLivArea', 'GarageCars', 'TotalBsmtSF', 'FullBath', 'YearBuilt']]  
  
# 计算相关性矩阵,确保没有缺失值  
correlation_matrix = df_date.corr().dropna(axis=0, how='any').dropna(axis=1, how='any')  

# 初始化一个空列表来存储三元组  
triplets = []  
   
for i in range(correlation_matrix.shape[0]):  
    for j in range(correlation_matrix.shape[1]):  
        # 获取 x 坐标(列名)和 y 坐标(列名)  
        x = i  
        y = j 
        # 获取数据值(相关性系数)  
        value = round(correlation_matrix.iloc[i, j], 2)
        triplets.append((x, y, value))          

# 创建热力图  
c = (  
    HeatMap(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))  
    .add_xaxis(correlation_matrix.columns.tolist())  
    .add_yaxis(  
        "相关性",  
        correlation_matrix.index.tolist(),  
        triplets,  
        label_opts=opts.LabelOpts(is_show=True, position="inside"),  
    )  
    .set_global_opts(  
        title_opts=opts.TitleOpts(title="热力图"),  
        visualmap_opts=opts.VisualMapOpts(min_=-1, max_=1),  # 设置最小值和最大值以反映相关性范围  
    )  
)  
  
# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

九、地理类图表

1、地图

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

x_data = ['杭州市','衢州市','湖州市','嘉兴市','宁波市','绍兴市','台州市','温州市','丽水市','金华市','舟山市']
y_data = [4000,2000,1800,2100,3500,3000,3000,3500,1500,2000,1000]

c = (
    Map(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))
    .add("销量", [list(z) for z in zip(x_data, y_data)], "浙江")
    .set_series_opts(label_opts=opts.LabelOpts(is_show=True, position="center",formatter="{b}{c}", rotate=0))    
    .set_global_opts(
        title_opts=opts.TitleOpts(title="地图"),
        visualmap_opts=opts.VisualMapOpts(max_=4000),
    )
)

# 渲染图表到notebook  
c.render_notebook()

在这里插入图片描述

十、突出类图表

1、仪表盘

from pyecharts import options as opts  
from pyecharts.charts import Gauge  
from pyecharts.globals import ThemeType
  
# 创建并配置Gauge实例  
gauge = (  
    Gauge(init_opts=opts.InitOpts( theme=ThemeType.WALDEN))  
    .add(  
        "业务指标",  
        [("完成率", 55.5)],  
        split_number=5,  
        axisline_opts=opts.AxisLineOpts(  
            linestyle_opts=opts.LineStyleOpts(  
                color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30  
            )  
        ),  
        detail_label_opts=opts.LabelOpts(formatter="{value}"),  
    )  
    .set_global_opts(  
        title_opts=opts.TitleOpts(title="仪表盘"),  
        legend_opts=opts.LegendOpts(is_show=False),  
    )  
)  
  
# 渲染图表到notebook  
gauge.render_notebook()  

在这里插入图片描述

十一、组合图表

1、overlap

import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Line, Grid
from pyecharts import options as opts
from pyecharts.charts import Bar

周期 = ['202340', '202341', '202342', '202343', '202344', '202345', '202346', '202347', '202348', '202349', '202350', '202351']
浏览 = ['20', '49', '53', '57', '43', '52', '56', '60', '80', '56', '59', '35']
点击 = ['4', '14', '4', '2', '13', '7', '6', '5', '11', '4', '8', '0']
购买 = ['0', '0', '1', '0', '3', '1', '1', '1', '1', '3', '3', '1']
总量 = ['24', '63', '58', '59', '59', '60', '63', '66', '92', '63', '70', '36']

bar = (
    Bar(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))
        .add_xaxis(周期)
        .add_yaxis('浏览', 浏览, stack='stack1', color='#5aa5b4', category_gap="40%")
        .add_yaxis('点击', 点击, stack='stack1', color='#FFFF00', category_gap="40%")
        .add_yaxis('购买', 购买, stack='stack1', color='#FF6347', category_gap="40%")
        .set_series_opts(label_opts=opts.LabelOpts(position="right",
                                                   formatter='{c}'))
        .set_global_opts(title_opts=opts.TitleOpts(title='overlap'),
                         # xaxis_opts=opts.AxisOpts(name='地市'),
                         # visualmap_opts=opts.VisualMapOpts(max_=150),
                         # toolbox_opts=opts.ToolboxOpts(),
                         #  datazoom_opts=opts.DataZoomOpts(),
                         xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 45})
                         )
)

line = (
    Line(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))
        .add_xaxis(周期)
        .add_yaxis(
        "总量",
        总量,
        # markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
#         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=38)]),
    )
        .set_global_opts(title_opts=opts.TitleOpts(title=""))
)

overlap1 = bar.overlap(line)
overlap1.render_notebook()

在这里插入图片描述

2、grid-并行多图

import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Line, Grid
from pyecharts import options as opts
from pyecharts.charts import Bar

周期 = ['202340', '202341', '202342', '202343', '202344', '202345', '202346', '202347', '202348', '202349', '202350', '202351']
浏览 = ['20', '49', '53', '57', '43', '52', '56', '60', '80', '56', '59', '35']
点击 = ['4', '14', '4', '2', '13', '7', '6', '5', '11', '4', '8', '0']
购买 = ['0', '0', '1', '0', '3', '1', '1', '1', '1', '3', '3', '1']
总量 = ['24', '63', '58', '59', '59', '60', '63', '66', '92', '63', '70', '36']

bar = (
    Bar(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))
        .add_xaxis(周期)
        .add_yaxis('浏览', 浏览, stack='stack1', color='#5aa5b4', category_gap="40%")
        .add_yaxis('点击', 点击, stack='stack1', color='#FFFF00', category_gap="40%")
        .add_yaxis('购买', 购买, stack='stack1', color='#FF6347', category_gap="40%")
        .set_series_opts(label_opts=opts.LabelOpts(position="right",
                                                   formatter='{c}'))
        .set_global_opts(title_opts=opts.TitleOpts(title='并行多图'),
                         # xaxis_opts=opts.AxisOpts(name='地市'),
                         # visualmap_opts=opts.VisualMapOpts(max_=150),
                         # toolbox_opts=opts.ToolboxOpts(),
                         #  datazoom_opts=opts.DataZoomOpts(),
                         xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 45})
                         )
)

line = (
    Line(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))
        .add_xaxis(周期)
        .add_yaxis(
        "总量",
        总量,
        # markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
#         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=38)]),
    )
        .set_global_opts(title_opts=opts.TitleOpts(title=""))
)



grid = (
    Grid(init_opts=opts.InitOpts(width="860px", height="600px", theme=ThemeType.LIGHT))
        .add(bar, grid_opts=opts.GridOpts(pos_top="50%", pos_right="10%"))
        .add(line, grid_opts=opts.GridOpts(pos_left="10%", pos_bottom="50%"))
)

grid.render_notebook()

在这里插入图片描述

3、page-顺序多图

from pyecharts.charts import Page
import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Line, Tab
from pyecharts import options as opts
from pyecharts.charts import Bar

周期 = ['202340', '202341', '202342', '202343', '202344', '202345', '202346', '202347', '202348', '202349', '202350', '202351']
浏览 = ['20', '49', '53', '57', '43', '52', '56', '60', '80', '56', '59', '35']
点击 = ['4', '14', '4', '2', '13', '7', '6', '5', '11', '4', '8', '0']
购买 = ['0', '0', '1', '0', '3', '1', '1', '1', '1', '3', '3', '1']
总量 = ['24', '63', '58', '59', '59', '60', '63', '66', '92', '63', '70', '36']

bar = (
    Bar(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))
        .add_xaxis(周期)
        .add_yaxis('浏览', 浏览, stack='stack1', color='#5aa5b4', category_gap="40%")
        .add_yaxis('点击', 点击, stack='stack1', color='#FFFF00', category_gap="40%")
        .add_yaxis('购买', 购买, stack='stack1', color='#FF6347', category_gap="40%")
        .set_series_opts(label_opts=opts.LabelOpts(position="right",
                                                   formatter='{c}'))
        .set_global_opts(title_opts=opts.TitleOpts(title='顺序多图'),d
                         # xaxis_opts=opts.AxisOpts(name='地市'),
                         # visualmap_opts=opts.VisualMapOpts(max_=150),
                         # toolbox_opts=opts.ToolboxOpts(),
                         #  datazoom_opts=opts.DataZoomOpts(),
                         xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 45})
                         )
)

line = (
    Line(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))
        .add_xaxis(周期)
        .add_yaxis(
        "总量",
        总量,
        # markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
#         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=38)]),
    )
        .set_global_opts(title_opts=opts.TitleOpts(title=""))
)

def page_draggable_layout():
    # page = Page(layout=Page.SimplePageLayout)  #  不可拖动
    page = Page(layout=Page.DraggablePageLayout)  # 可拖动
    page.add(
        bar,
        line
    )
    page.render_notebook()
    page.render("C:/Users/Mirror/Desktop/下载/pyecharts/顺序多图.html")  


if __name__ == "__main__":
    page_draggable_layout()

在这里插入图片描述

4、tab-选项卡多图

import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Line, Tab
from pyecharts import options as opts
from pyecharts.charts import Bar

周期 = ['202340', '202341', '202342', '202343', '202344', '202345', '202346', '202347', '202348', '202349', '202350', '202351']
浏览 = ['20', '49', '53', '57', '43', '52', '56', '60', '80', '56', '59', '35']
点击 = ['4', '14', '4', '2', '13', '7', '6', '5', '11', '4', '8', '0']
购买 = ['0', '0', '1', '0', '3', '1', '1', '1', '1', '3', '3', '1']
总量 = ['24', '63', '58', '59', '59', '60', '63', '66', '92', '63', '70', '36']

bar = (
    Bar(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))
        .add_xaxis(周期)
        .add_yaxis('浏览', 浏览, stack='stack1', color='#5aa5b4', category_gap="40%")
        .add_yaxis('点击', 点击, stack='stack1', color='#FFFF00', category_gap="40%")
        .add_yaxis('购买', 购买, stack='stack1', color='#FF6347', category_gap="40%")
        .set_series_opts(label_opts=opts.LabelOpts(position="right",
                                                   formatter='{c}'))
        .set_global_opts(title_opts=opts.TitleOpts(title='选项卡多图'),
                         # xaxis_opts=opts.AxisOpts(name='地市'),
                         # visualmap_opts=opts.VisualMapOpts(max_=150),
                         # toolbox_opts=opts.ToolboxOpts(),
                         #  datazoom_opts=opts.DataZoomOpts(),
                         xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 45})
                         )
)

line = (
    Line(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))
        .add_xaxis(周期)
        .add_yaxis(
        "总量",
        总量,
        # markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]),
#         markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=38)]),
    )
        .set_global_opts(title_opts=opts.TitleOpts(title=""))
)

tab = Tab()
tab.add(bar, "bar-example")
tab.add(line, "line-example")

tab.render_notebook()

在这里插入图片描述

5、timeline-时间线轮播多图

import pandas as pd
from pyecharts.globals import ThemeType
from pyecharts.charts import Timeline, Pie
from pyecharts import options as opts
dict ={
'202212': [['电脑', 1], ['电视', 13], ['冰箱', 8],['空调', 8],['洗衣机', 8]], 
'202301': [['电脑', 2], ['电视', 12], ['冰箱', 5],['空调', 3],['洗衣机', 8]], 
'202302': [['电脑', 3], ['电视', 11], ['冰箱', 8],['空调', 18],['洗衣机', 8]], 
'202303': [['电脑', 4], ['电视', 10], ['冰箱', 8],['空调', 8],['洗衣机', 2]], 
'202304': [['电脑', 5], ['电视', 9], ['冰箱', 8],['空调', 8],['洗衣机', 8]], 
'202305': [['电脑', 6], ['电视', 8], ['冰箱', 9],['空调', 8],['洗衣机', 8]], 
'202306': [['电脑', 7], ['电视', 7], ['冰箱', 8],['空调', 7],['洗衣机', 5]], 
'202307': [['电脑', 8], ['电视', 6], ['冰箱', 8],['空调', 8],['洗衣机', 8]], 
'202308': [['电脑', 9], ['电视', 1], ['冰箱', 8],['空调', 8],['洗衣机', 9]], 
'202309': [['电脑', 10], ['电视', 5], ['冰箱', 7],['空调', 7],['洗衣机', 8]], 
'202310': [['电脑', 11], ['电视', 4], ['冰箱', 8],['空调', 8],['洗衣机', 4]], 
'202311': [['电脑', 12], ['电视', 3], ['冰箱', 18],['空调', 8],['洗衣机', 8]], 
'202312': [['电脑', 13], ['电视', 2], ['冰箱', 8],['空调', 8],['洗衣机', 3]]
}
tl_001 = Timeline(init_opts=opts.InitOpts(width="640px", height="400px", theme=ThemeType.LIGHT))           
for date, data in dict.items():
    pie = (
        Pie()
            .add(
            "数量",
            data,
            rosetype="radius",
            radius=["30%", "55%"],
        )
            .set_global_opts(
            legend_opts=opts.LegendOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(max_=10, item_width=15, item_height=80),
            title_opts=opts.TitleOpts("每月家电销售情况 (时间: {}月 )".format(date)),

        )
    )
    tl_001.add(pie, "{}".format(date))    
           
tl_001.render_notebook()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动点击脚本

一个简单的自动点击脚本 配置文件张这样,需要的自己截图 excel配置文件 #!/usr/bin/python3# sys.path.append("C:\\Users\苏\\.vscode\\extensions\\ms-python.vscode-pylance-2023.10.50\\dist\\typeshed-fallback\\stubs\\PyAutoGUI") # print(sys.…

python入门(二)

python的安装很方便,我们这里就不再进行讲解,大家可以自己去搜索视频。下面分享一下Python的入门知识点。 执行命令的方式 在安装好python后,有两种方式可以执行命令: 命令行程序文件,后缀名为.py 对于命令行&…

Javaweb day17 day18 day19

mysql-DDL 数据库操作 写法 客户端工具 (也可以使用idea) 表 写法 约束 数据类型 案例 写法 表的查询修改删除 写法 删除

鲸鱼优化算法双馈风电机组一次调频三机九节点虚拟惯量下垂控制DFIG matlab/simulink

以频率偏差变化最小为优化目标,采用鲸鱼算法优化风电机组一次调频控制系数。 采用matlab.m文件与simulink.slx文件联合。 系统频率优化结果 鲸鱼算法 时域模型

[MTK6771] android13系统启用OMAPI 支持esim.me

OMAPI是啥?看看谷歌的解释: 说了一大堆懂的人不需要看,不懂的还是看不懂,我就是后者 总之说人话就是,像SIM卡,NFC这类模块需要用到这个东西,那么接着往下看 上层APP想要使用这个OMAPI供应商稳…

C语言-strtok(切片的使用)

strtok(切片的使用) 使用规则 使用的基本情况 strcpy 第二次调用的时候传的是空指针 所以打印出来的是 每一次调用函数都会把当前函数的地址记住 所以二次调用的时候 传的是null 连起始位置都不传了 只是传null 但是需要知道的是 当知道三段 你调用第…

Golang高效流控实践

流控对于构建高可靠弹性系统至关重要,本文介绍了Golang内置的流控组件,通过该组件就可以打造适合各种业务场景的流控系统。原文: Rate Limiting in Go: Controlling Traffic with Efficiency[1] Jon Cellier Unsplash 导言 流控(Rate limiting)是构建可扩…

element-plus怎么修改表单中的label字体颜色及大小

问题描述: 当我们在vue3中使用element-plus组件库提供的表单组件时,有时我们需要修改表单中label的字体颜色等属性,这是如果直接选中label的class进行修改是不起作用的,我们只需深度选择即可选中并进行修改。 比如: …

阿里二面:什么情况会发生Full GC?如何避免频繁Full GC?

阿里二面:什么情况会发生Full GC?如何避免频繁Full GC? Minor GC、Major GC 和 Full GC区别? Minor GC、Major GC和Full GC是垃圾回收中的三个重要概念,它们描述了垃圾回收的不同阶段和范围: Minor GC&am…

旋转花键的制造工艺

旋转花键的制造工艺是一门精细的技术,涉及多个步骤和精细的操作,以确保最终产品的质量和性能,下面简单介绍下旋转花键的制造工艺。 1、原材料准备:制造旋转花键的核心是选择合适的材料,根据花键的规格和性能要求&#…

lftp服务与http服务(包含scp服务)详解

目录 前言: 1.lftp服务 1.1lftp服务的介绍以及应用场景 1.2安装lftp服务 1.2进行配置 1.3实际操作 2.http服务 2.1http服务介绍以及应用场景 2.1安装httpd服务 2.2进行配置 2.3实际操作 3.scp服务 3.1scp服务的介绍以及应用场景 致谢: 前言: 在当今互联网…

由浅到深认识C语言(11):结构体

该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…

一起学数据分析_2

写在前面:代码运行环境为jupyter,如果结果显示不出来的地方就加一个print()函数。 一、数据基本处理 缺失值处理: import numpy as np import pandas as pd#加载数据train.csv df pd.read_csv(train_chinese.csv) df.head()# 查看数据基本…

数据结构的概念大合集01(含数据结构的基本定义,算法及其描述)

概念大合集01 1、数据结构基础的定义2、数据结构2.1 数据元素之间关系的集合2.2数据结构的三要素2.2.1数据的逻辑结构2.2.2数据的存储(物理)结构2.2.3数据的运算 3、数据类型4、抽象数据类型类型(ADT)5、算法及其描述5.1算法的5个…

NCV4275CDT50RKG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述: NCV4275C 是一款低漏稳压器,可用于严酷汽车环境。它包括了较宽的运行温度范围和输出电压范围。输出调节为 5.0 V 或 3.3 V,额定输出电流为 450 mA。它还提供过电流保护、超温保护和可编程微处理器重置等多种功能。NCV4275C 采用 D…

观察者模式的理解和引用

1.前言 在之前的H5小游戏中,对于长连接发送的不同类型数据包的处理,是通过switch语句进行处理的,于是在自己的代码中出现了大量的case分支,不方便进行维护和后期的版本迭代。于是在老师的指导下,开始寻求使用观察者模…

互动投影游戏如何为科普教育馆带来更加生动有趣的科普体验?

近年科普教育馆在数字多媒体技术的支持下,让更多的家长和孩子注意到这一展示场景,尤其是对孩子来说,这里不仅是一个扩展知识的场景,更是一个发掘自我、探索未知世界的地方,而在这个过程中,多媒体互动技术的…

【MySQL高级篇】08-事务篇

第13章:事务基础知识 #09-事务的基础知识#1.事务的完成过程 #步骤1:开启事务 #步骤2:一系列的DML操作 #.... #步骤3:事务结束的状态:提交的状态(COMMIT) 、 中止的状态(ROLLBACK)#2. 显式事务#2.1 如何开启? 使用关键…

蓝桥:保险箱(Python,动态规划)

问题描述: 小蓝有一个保险箱,保险箱上共有 n 位数字。小蓝可以任意调整保险箱上的每个数字,每一次操作可以将其中一位增加 1 或减少 1。当某位原本为 9 或 0 时可能会向前(左边)进位/退位,当最高位&#x…

如果要做优化,CSS提高性能的方法有哪些?

文章目录 一、前言二、实现方式内联首屏关键CSS异步加载CSS资源压缩合理使用选择器减少使用昂贵的属性不要使用import其他 三、总结参考文献 一、前言 每一个网页都离不开css,但是很多人又认为,css主要是用来完成页面布局的,像一些细节或者优…