【四 (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.mzph.cn/news/750130.shtml

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

相关文章

【AI】Ubuntu系统深度学习框架的神经网络图绘制

一、Graphviz 在Ubuntu上安装Graphviz,可以使用命令行工具apt进行安装。 安装Graphviz的步骤相对简单。打开终端,输入以下命令更新软件包列表:sudo apt update。之后,使用命令sudo apt install graphviz来安装Graphviz软件包。为…

MySQL语法分类 DQL(1)基础查询

//语法 select 字段列表 from 表名列表 where条件列表 group by分组字段 having 分组后的条件 order by排序 limit 分页限定为了更好的学习这里给出基本表数据用于查询操作 create table student (id int, name varchar(20), age int, sex varchar(5),address varchar(100),ma…

将 OpenCV 与 Eclipse 结合使用(插件 CDT)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:将OpenCV与gcc和CMake结合使用 下一篇:OpenCV4.9.0在windows系统下的安装 警告: 本教程可以包含过时的信息。 先决条件 两种方式,一种…

CODESYS开发教程13-长字符串处理

摘要:这是一篇写给新手的关于CODESYS开发环境的小白教程,一看就懂...... 在以前的《CODESYS开发教程7-字符串及其基本操作》教程中,介绍了字符串及其基本操作,有朋友看了以后觉得不过瘾,希望有一些关于字符串的更加深入…

javaweb员工健康管理监护系统

项目演示视频 (链接:https://pan.baidu.com/s/1WliYEUH4c0HVB7s0-1WDUA 提取码:1234 --来自百度网盘超级会员V5的分享) 该项目所用到技术 java ssh框架 3:该项目的用到的开发工具? eclipse和idea都可以、m…

Echo框架:高性能的Golang Web框架

Echo框架:高性能的Golang Web框架 在Golang的Web开发领域,选择一个适合的框架是构建高性能和可扩展应用程序的关键。Echo是一个备受推崇的Golang Web框架,以其简洁高效和强大功能而广受欢迎。本文将介绍Echo框架的基本特点、使用方式及其优势…

JVM学习-垃圾回收专题

目录 1.如何判断对象可以回收 1.1引用计数法 1.2可达性分析算法 1.3五种引用 1.4拓展:直接内存 2.垃圾回收算法 2.1标记清除算法 2.2标记整理算法 2.3复制 3.分代垃圾回收 3.垃圾回收器 3.1串行垃圾回收器 3.2吞吐量优先垃圾回收器 3.3响应时间优先垃圾回收器…

Qt 实现 Asterix 报文解析库

【写在前面】 最近工作中需要解析 Cat 21 和 Cat 62 的 ADS-B 数据 ( 自己的工作包含航空领域 )。 然后,因为整个 Asterix 协议类别非常之多,每个类别的版本也多,纯手工实现每个版本解析根本不现实 ( 然鹅公司之前的解析库就是这么做的且做的…

win10 + cpu + pycharm + mindspore

MindSpore是华为公司自研的最佳匹配昇腾AI处理器算力的全场景深度学习框架。 1、打开官网: MindSpore官网 2、选择以下选项: 3、创建conda 环境,这里python 选择3.9.0,也可以选择其他版本: conda create -c conda-…

智慧交通:构建智慧城市的重要一环

随着信息技术的飞速发展,智慧城市已成为现代城市发展的重要方向。作为智慧城市的重要组成部分,智慧交通以其高效、便捷、环保的特性,成为推动城市现代化进程的关键力量。本文将从智慧交通的概念、发展现状、面临挑战以及未来趋势等方面&#…

MySQL语法分类 DDL(1)

DDL(1)(操作数据库、表) 数据库操作(CRUD) C(Create):创建 //指定字符集创建 create database db_1 character set utf8;//避免重复创建数据库报错可以用一下命令 create database if not exists db_1 character set utf8;R(Retrieve):查询 //查询所…

物联网竞赛板CubMx全部功能简洁配置汇总

目录 前言:1、按键&LED灯配置:2、OLED配置:3、继电器配置:4、LORA模块配置:5、矩阵模块:6、串口模块:7、RTC配置:8、ADC模块配置:9、温度传感器模块:后续…

cartographer学习与使用

记录一下在配置和使用cartographer建图时遇到的各种问题吧。 我的数据 配置文件&#xff1a; my_rslidar.launch <launch> <param name"/use_sim_time" value"false" /> <!--启动建图节点--> <node name"cartographer_n…

旋转花键的制造工艺

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

MATLAB 矩阵

【MATLAB】&#xff08;四&#xff09;MATLAB在线性代数中的应用_线性代数在matlab中的应用-CSDN博客 矩阵的秩 rank rank&#xff08;a&#xff09; 矩阵的逆矩阵 inv inv&#xff08;a&#xff09; 矩阵的特征值eig和特征向量D [V,D]eig(a) 特征值 deig(a) 特征向量D [V…

考研C语言复习进阶(6)

目录 1. 程序的翻译环境和执行环境 2. 详解编译链接 2.1 翻译环境 ​编辑​编辑 2.2 编译本身也分为几个阶段&#xff1a; 2.3 运行环境 3. 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define 定义宏 2.2.3 #define 替换规则 3.2.4…

SQLiteC/C++接口详细介绍之sqlite3类(十五)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十四&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十六&#xff09; 47.sqlite3_set_authorizer 用法&#xff…

11.进程的同步与互斥

11.进程的同步与互斥 计数信号量及其初始化 和王道里面学的PV操作一摸一样,带个count变量,带个阻塞队列 //D:\code\x86\code\start\start\source\kernel\include\ipc\sem.h #ifndef OS_SEM_H #define OS_SEM_H#include "tools/list.h"/*** 进程同步用的计数信号量*…

BswM模块配置指导

文章目录 BswM配置的分类自动配置:通信控制Rule:CC_ComMChannel_Rx自动配置:Ecu状态处理自动配置:模块初始化其他配置总结BswM模块是基础软件的模式管理模块,模式/状态控制都是由BswM模块进行,其实现的方式是通过 “请求-仲裁-执行”三步完成。本篇基于基本Can通信所用到…

CSS其他属性

文章目录 1. vertical-align1.1. 概念1.2. 常用值1.3. 作用1.4. 出现的情况一1.4.1. 原因1.4.2. 解决方案 1.5. 出现情况二1.5.1. 解决方案一1.5.2. 解决方案二1.5.3. 解决方案三 1.6. 出现情况三1.6.1. 原因1.6.2. 解决方案 2. 溢出效果2.1. 作用2.2. 属性名 3. 隐藏效果3.1. …