【四 (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.hqwc.cn/news/544467.html

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

相关文章

计算机网络 |内网穿透

其实内网穿透,也挺好玩的,如果在大学的时候,那个时候讲计算机网络的老师能横向延展,估计课也会更有趣不少,本来计算机网络这门课就是计算机课程中可玩性最搞的。 只能说,怪可惜的 回到正题,内网…

数据分析-Pandas的直接用Matplotlib绘图

数据分析-Pandas的直接用Matplotlib绘图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…

音频的录制及播放

在终端安装好pip install pyaudio,在pycharm中敲入录音的代码,然后点击运行可以在10s内进行录音,录音后的音频会保存在与录音代码同一路径项目中,然后再新建项目敲入播放的代码,点击运行,会把录入的录音进行…

[沉淀之华] 自研基于SpringBoot Mybaits 构建低代码数据治理脚手架分享:涵盖数据同步、数据比对、数据归档、数据恢复为一体

文章目录 成果演示背景整体能力功能描述相关细节安装使用 成果演示 Github地址:数据治理脚手架 wiki:kg-ctl-core使用文档 背景 为什么要做这个? 一个老生常谈且不得不谈问题:随着业务日益发展,如果不做数据迁移&…

路由器端口转发远程桌面控制:一电脑连接不同局域网的另一电脑

一、引言 路由器端口转发:指在路由器上设置一定的规则,将外部的数据包转发到内部指定的设备或应用程序。这通常需要对路由器进行一些配置,以允许外部网络访问内部网络中的特定服务和设备。端口转发功能可以实现多种应用场景,例如远…

【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突

【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到…

AI毕业论文降重GPTS,避免AI检测,高效完成论文

视频演示 AI毕业论文降重GPTS,避免AI检测,高效完成论文! 开发目的 “毕业论文降重”GPTS应用,作用为:重新表述学术论文,降低相似性评分,避免AI检测。 使用地址 地址:毕业论文降重…

图解缓存淘汰算法 LRU、LFU | 最近最少使用、最不经常使用算法 | go语言实现

写在前面 无论是什么系统,在研发的过程中不可避免的会使用到缓存,而缓存一般来说我们不会永久存储,但是缓存的内容是有限的,那么我们如何在有限的内存空间中,尽可能的保留有效的缓存信息呢? 那么我们就可以…

PyCharm中如何使用不同的虚拟环境

1. 简介 有些项目用老的运行环境,而有些项目用新的运行环境,那么我们在运行这些代码(比如跑对比实验的时候)如何进行切换呢,这时候就可以使用虚拟环境啦 2. 虚拟环境的创建 首先启动Anaconda Prompt 并在其中执行如…

解决Linux中Eclipse启动时找不到Java环境的问题

按照报错的意思是没有在/usr/local/eclipse/jre/bin/java下找到java环境,我检查了一下eclipse的目录结构发现在/usr/local/eclipse没有jre/bin/java,我的想法是自己建对应文件夹然后软连接到我的java环境 cd /usr/local/eclipse sudo mkdir jre cd jre s…

Linux自动化任务管理以及常见定时命令示例

Linux以其强大的稳定性和灵活性成为了许多IT专业人士的首选。其中,自动化任务管理是Linux系统管理不可或缺的一部分,它能帮助系统管理员有效地管理系统任务,提高工作效率。定时任务,作为自动化任务管理的重要组成部分,…

嵌入式硬件设计(一)|利用 NodeMCU-ESP8266 开发板和继电器结合APP“点灯•blinker”制作Wi-Fi智能开关(附有关硬件详细资料)

概述 本文主要讲述利用 NodeMCU-ESP8266 开发板和继电器通过手机 APP “ 点灯 • Blinker ” 制作一款能够由手机控制的WiFi 智能开关,从而实现智能物联。NodeMCU 是基于 Lua 的开源固件,ESP8266-NodeMCU是一个开源硬件开发板,支持WiFi功能&a…