【四 (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…

springboot/ssm图书管理系统Java图书馆借阅管理系统web图书借阅系统

springboot/ssm图书管理系统Java图书馆借阅管理系统web图书借阅系统 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&#…

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

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

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

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

Android Framework基础之C语言入门

C语言入门详解 一、C语言简介 C语言是一种通用的、过程式的编程语言,支持结构化编程、词法变量作用域和递归等功能,是迄今为止最为强大的编程语言之一。C语言设计提供了能轻松实现底层的访问,通常用于系统软件开发,应用程序的一…

ES系列之快照与恢复

概述 原理 ES底层核心基于lucene,一个分片即是一个lucene对象实例,ES快照(snapshot)本质是对lucene物理文件的拷贝。 增量快照的核心是比较lucene segements不可变文件信息,每次创建快照时会建立一个IndexCommit提交点,包含seg…

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响应时间优先垃圾回收器…

什么是雪花算法?

雪花算法(Snowflake Algorithm)是一种分布式ID生成算法,由Twitter公司开发并开源。它主要用于在分布式系统中生成全局唯一、趋势递增的ID。 雪花算法生成的ID是一个64位的长整数,该数字被划分为几部分: 符号位&#xf…

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-…

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

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

在一个程序页面中加几个字段用于增删改查

文章目录 前言一、单表步骤1:更新实体类步骤2:更新DAO层XML步骤3:更新Service实现类步骤4:更新Controller层步骤5:更新前端Vue模型和组件 二、多表步骤1:新程序的增删改查步骤2:老程序中新增实体…

学习python笔记:7,操作excel表格,生成柱状图,

注意: 注意xlsx的格式,wps一定另存为xlsx才可以,不然就出错。 操作表格 1,在终端里面安装openpyxl pip install openpyxl import openpyxl as xl from openpyxl.chart import BarChart,Reference#注意xlsx的格式,wps…

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):查询 //查询所…

【DiffusionModel系列】Sora揭底系列模型介绍 (VAE/DDPM/SD/DiT/Sora)

飞书PPT链接 简介 该文档介绍了几种深度学习模型,特别是那些在图像合成和处理方面有显著应用的模型。文档内容涉及变分自编码器(VAE)、去噪扩散概率模型(DDPM)、稳定扩散(Stable Diffusion)、…

物联网竞赛板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…