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

目录

    • 文章导航
    • 一、介绍
    • [✨ 特性]
    • 二、安装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 ThemeTypedf = 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 ThemeTypedf = 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 ThemeTypedf = 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 ThemeTypedf = 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 ThemeTypedf = 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 ThemeTypedf = 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 SymbolTypewords = [("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 Funnelx_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 ThemeTypedf = 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 ThemeTypedf = 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 ThemeTypedf = 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 ThemeTypedf = 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 Fakerdf = 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 Boxplotv1 = [[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 ThemeTypedf = 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 ThemeTypedf = 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 ThemeTypedf = 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 Fakerx_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.rhkb.cn/news/279780.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧城市新篇章:数字孪生的力量与未来

随着信息技术的迅猛发展和数字化浪潮的推进,智慧城市作为现代城市发展的新模式,正在逐步改变我们的生活方式和社会结构。在智慧城市的构建中,数字孪生技术以其独特的优势,为城市的规划、管理、服务等方面带来了革命性的变革。本文…

Ubuntu虚拟机的IP总频繁变化,导致Xshell断开连接

文章目录 一、IP变化的原因二、解决方法:固定IP三、参考文章 一、IP变化的原因 1.DHCP协议 虚拟机系统(Ubuntu、CentOS、UOS等Linux系统)启动后,加入本地局域网网络时,会向本地网络申请租约一个IP地址,租约时长不定。我这里租约时…

Python之进程池、阻塞模式、非阻塞模式、进程间的通信、queue

非阻塞模式 # 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程 # 但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法. # 初始化Poo1时&…

程序员下班以后做什么副业合适?

我就是一个最普通的网络安全工程师,出道快10年了,不出意外地遭遇到瓶颈期,但是凭技术在各大平台挖漏洞副业,硬是妥妥扛过来了。 因为对于程序员来讲,这是个试错成本很低、事半功倍的选择。编程技能是一种强大生产力&a…

Flutter-底部弹出框(Widget层级)

需求 支持底部弹出对话框。支持手势滑动关闭。支持在widget中嵌入引用。支持底部弹出框弹出后不影响其他操作。支持弹出框中内容固定头部和下面列表时,支持触摸头部并在列表不在头部的时候支持滑动关闭 简述 通过上面的需求可知,就是在界面中可以支持…

行业回暖?这个行业岗位需求飙升6倍!程序员们提前恭喜了!

前言 随着今年史上最长春节假期正式收官,各行各业相继进入开工节奏,就业市场开启持续升温模式。 今年开工首周,人才需求增长明显,求职者活跃度大大增多,就业市场进入了繁忙有序的节奏,呈现出春招市场的勃…

CI/CD实战-git工具使用 1

版本控制系统 本地版本控制系统 集中化的版本控制系统 分布式版本控制系统 git官网文档:https://git-scm.com/book/zh/v2 Git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(sta…

查找众数及中位数 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 众数是指一组数据中出现次数量多的那个数,众数可以是多个。 中位数只是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数,如果这组数据的个数为偶数,那…

harmonyOS简介及背景

harmonyOS的场景模式18n: 1(入口手机)8(电脑、VR、手环、iPad、智慧屏、)–wifi—n(车载、智能家居等所有)harmonyOS不需要考虑软硬件的差异,是一个兼容N种的超级终端harmonyOS干了两件事: (1&a…

没有经验就开通抖店,你会遇到以下这些问题!2024抖店教程(新版)

我是王路飞。 没有经验的人去做抖店的话,都会遇到哪些问题呢? 大概率逃脱不开这些问题: 店铺的类型怎么选? 店铺的流量从哪来? 没有货源但又担心做无货源模式会被平台判定违规; 怎么才能快速把店铺做…

pytorch 入门基础知识二(Pytorch 02)

一 微积分 1.1 导数和微分 微分就是求导: %matplotlib inline import numpy as np from matplotlib_inline import backend_inline from d2l import torch as d2l def f(x):return 3 * x ** 2 - 4 * x 定义: 然后求 f(x) 在 x 1 时的导数&#xff…

深入理解Ubuntu22:探索Linux操作系统的功能与应用

一、linux (一)、安装 1、电脑可以安装双系统,即在一套硬件上只能同时运行一个操作系统,例:C盘安装win,D盘安装linux。 2、虚拟机 虚拟机需要硬件支持,并需开启VT-x. 如:Virtual…

PLM系统实施的六大难点及其解决方法

实施PLM系统是企业实现产品全生命周期管理的重要举措,但在实施过程中往往会面临一些难点。本文将探讨实施PLM系统的主要难点及其解决方法。 首先,数据迁移和整合是实施PLM系统的一个关键挑战。企业可能拥有大量的现有数据,包括设计文件、工艺…

幼儿教育管理系统|基于jsp 技术+ Mysql+Java的幼儿教育管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

HANA VIEW 用 ABAP 创建CDS VIEW,在生成ODATA

这里我们做ADT来创建 场景介绍:把hana中的一个底表,创建成ABAP的 CDS VIEW ,在把CDS VIEW 生成 OData 服务。 一、创建CDS Table Function 红框内根据自身情况填写 选择 Define Table Function with Parameters 创建 Data Definition 完整代码,定义 结构 , 也可以定义参…

力扣Lc18--- 168. Excel表列名称(java版)-2024年3月19日

1.题目描述 2.知识点 因为是输入字符 然后显示数字。 就类似2进制10代表2&#xff0c;110代表4&#xff0c;用某进制次幂的方式返回最后的数字结果。 3.代码实现 class Solution {public int titleToNumber(String columnTitle) {int sum0;for(int i0;i<columnTitle.len…

python网络爬虫实战教学——urllib的使用(1)

文章目录 专栏导读1、前言2、urllib的使用3、发送请求3.1 urlopen3.2 request 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对…

C#对ListBox控件中的数据进行的操作

目录 1.添加数据&#xff1a; 2.删除数据&#xff1a; 3.清空数据&#xff1a; 4.选择项&#xff1a; 5.排序&#xff1a; 6.获取选中的项&#xff1a; 7.获取ListBox中的所有项&#xff1a; 8.综合示例 C#中对ListBox控件中的数据进行的操作主要包括添加、删除、清空、…

关于小仙炖燕窝的崛起!

产品策略 爆火逻辑 1. 超级品类&#xff1a;对传统的升级 干燕窝&#xff1a;选&#xff1f;炖&#xff1f;吃&#xff1f; &#xff08;口感差&#xff09;即食燕窝&#xff1a;新鲜&#xff1f;营养&#xff1f;&#xff08;营养保障&#xff09;鲜炖燕窝&#xff1a;保质期、…

【鸿蒙HarmonyOS开发笔记】应用数据持久化之通过关系型数据库实现数据持久化

概述 关系型数据库&#xff08;Relational Database&#xff0c;RDB&#xff09;是一种基于关系模型来管理数据的数据库。关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制&#xff0c;对外提供了一系列的增、删、改、查等接口&#xff0c;也可以直接运…